Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

怎样判断K的循环点,老是超时 1015MS

Posted by flyingfish at 2004-07-17 15:40:30 on Problem 1026
Problem Id:1026  User Id:flyingfish 
Memory:20K  Time:1015MS
Language:C++  Result:Time Limit Exceed

Source 

#include<stdio.h>
#include<string.h>
int main()
{
	int n,a[205],k,size,i,j,key=0;
	char arry[205],brry[205],*tmp,*p,*q,pre[205];
	while(scanf("%d",&n)!=EOF&&n!=0)
	{
		for(i=0;i<n;i++)
			scanf("%d",&a[i]);
		while(scanf("%d",&k)!=EOF&&k!=0)
		{
			getchar();
			gets(arry);key=0;
			size=strlen(arry);
			for(i=size;i<n;i++)
				arry[i]=' ';
			arry[i]='\0';brry[i]='\0';
			for(i=0;i<=n;i++)
				pre[i]=arry[i];
			p=arry;q=brry;
			for(i=0;i<k;i++)
			{
				for(j=0;j<n;j++)
					q[a[j]-1]=p[j];
				tmp=p;
				p=q;
				q=tmp;
				if(strcmp(pre,p)==0)
				{
					key=i+1;
					break;
				}
			}
			if(key!=0)
			{
				printf("%d\n",key);
				k=k%key;
				while(k--)
				{
					for(i=0;i<n;i++)
						q[a[i]-1]=p[i];
					tmp=p;
					p=q;
					q=tmp;
				}
			}
			printf("%s\n",p);
		}
		printf("\n");
	}
}


Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator