| ||||||||||
| 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 | |||||||||
童鞋们给的数据试了,都是正确的,一直WA,不知道怎么回事?
代码的大概意思是:
输入的字符串 x,y,z
先在z中先搜索x,并标记下这些字母在z中的位置,记录在temp里,然后在z中除去x后搜索y,如果满足,就返回成功。compare(x,y,z)
然后在z中先搜索y,并标记下这些字母在z中的位置,记录在temp里,然后在z中除去y后搜索x,如果满足,就返回成功。compare(y,x,z)
两次搜索中有一次成功,则说明满足题意。(compare(x,y,z)||compare(y,x,z));
#include<stdio.h>
#include<string.h>
int compare(char x[],char y[],char z[])
{
int xx,yy,len_x,len_y,len_z,j,k;
int temp[600];
xx=0;
yy=0;
len_x=strlen(x);
len_y=strlen(y);
len_z=strlen(z);
for(k=0;k<len_z;k++)
temp[k]=0;
for(j=0;j<len_z;j++)
{
if(xx<len_x&&z[j]==x[xx])
{
xx++;
temp[j]=1;
}
}
if(xx==len_x)//表示搜索到了x
{
for(j=0;j<len_z;j++)
{
if(yy<len_y&&z[j]==y[yy]&&temp[j]==0)
yy++;
}
if(yy==len_y)//同时找到了x,y
return 1;
}
//没搜索到x或y,则搜索不成功
return 0;
}
int main()
{
int n,i;
char x[300],y[300],z[600];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %s %s",x,y,z);
if(compare(x,y,z)||compare(y,x,z))
printf("Data set %d: yes\n",i+1);
else
printf("Data set %d: no\n",i+1);
}
return 0;
}
不知道哪里有问题?
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator