| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助哇......哪位牛人指点一下,我这个搜索部分怎么老是超时呢?....#include <stdio.h>
#include <string.h>
struct tt
{
char s1[100],s2[100];
}z[334];
int main ()
{
int n,i,m,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int k,p,s3[350]={0};
scanf("%d",&m);
m-=1;
for(j=0;j<m;j++)
scanf("%s%s",z[j].s1,z[j].s2);
k=m-1;
for(j=m-1;j>=0;j--) /*找出开始的那个字符串*/
{
for(p=j-1;p>=0;p--)
{
if(!strcmp(z[j].s1,z[p].s2))
{
k=p;
break;
}
}
if(p>=0)
break;
} /*找出开始的那个字符串*/
printf("Scenario #%d:\n",i);
printf("%s\n",z[k].s1); /*打出开始的那个字符串*/
s3[k]=1;
p=1;
/*我觉得错误就出现在 这个部分...可就是检查不出来......循环没跳出来,还请各位大牛指点一下小弟啊.....小弟感激不尽呐....*/
for(j=0;j<m;j++) /*依次搜索下一个字符串*/
{
if(!strcmp(z[k].s2,z[j].s1) && s3[j]==0)
{
printf("%s\n",z[j].s1);
k=j;
p++;
s3[j]=1;
}
if(p>=m-1)
break;
if(j==m-1)
j=-1;
} /*依次搜索下一个字符串*/
printf("%s\n\n",z[k].s2); /*打出最后一个没有在上面循环被打出的最后一个字符串*/
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator