杭电ACM的2029题这样为什么是wrong answer?

http://acm.hdu.edu.cn/showproblem.php?pid=2029#include<stdio.h>#include<string.h>intm... http://acm.hdu.edu.cn/showproblem.php?pid=2029

#include<stdio.h>
#include<string.h>
int main()
{
int n;
char from[1000];
char to[1000];
char *p1;
char *p2;
scanf("%d",&n);
getchar();
while(n--)
{
p1=from;
p2=to;
gets(from);
while(*(++p1)!='\0');
p1--;
while((*p2++=*p1--)!='\0');
if(strcmp(from,to)==0)
puts("yes");
else
puts("no");
}
return 0;
}
展开
 我来答
古振元
2009-12-30 · TA获得超过1046个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:259万
展开全部
可能是输出的格式不对,应该是全部都输入完毕后再输出,该成这样试试:
(还有,为了防止数据量过大,把每个数组的容量都扩大了10倍)
int main()
{
int n,m,i;
char from[10000];
char to[10000];
char *p1;
char *p2;
scanf("%d",&n);
getchar();
m=n;
char panswer[10000][4];
while(n--)
{
p1=from;
p2=to;
gets(from);
while(*(++p1)!='\0');
p1--;
while((*p2++=*p1--)!='\0');
if(strcmp(from,to)==0)
//puts("yes");
strcpy(panswer[m-n-1],"yes");
else
//puts("no");
strcpy(panswer[m-n-1],"no");
}

for(i=0;i<m;i++)
{
printf("%s\n",panswer[i]);

}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友350302d
2009-12-30 · TA获得超过669个赞
知道小有建树答主
回答量:1048
采纳率:0%
帮助的人:601万
展开全部
//改了下,好像有个函数是直接求反字符串的,不过最好自己写啦
#include<stdio.h>
#include<string.h>
int main()
{
int n;
char from[100];
char to[100];
char *p1;
char *p2;
char *p3;
scanf("%d",&n);
getchar();
while(n--)
{
p3 = p1 = from;
p2=to;
gets(from);
while(*(++p1)!='\0');
p1--;
while((*p2++=*p1--),p1>=p3);//终止条件不对,这里改了一下,你再看看
*p2 = 0;//最后一个空字符
if(strcmp(from,to)==0)
puts("yes");
else
puts("no");
}
return 0;
}
//下面是我写的,只用一个数组
#include <stdio.h>
char temp[100];
int main()
{
int n;
char* l;
char* r;
int flag;
scanf("%d\n",&n);
while(n--)
{
gets(temp);
l = temp;
r = temp;
flag = 1;
while(*r++);
r-- ;
while(l < r)
{
if(*l++ != *--r)
{
flag = 0;
break;
}
}
if(flag)
{
printf("yes\n");
}
else
{
printf("no\n");
}

}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
女儿飞
2009-12-30 · TA获得超过483个赞
知道小有建树答主
回答量:440
采纳率:0%
帮助的人:350万
展开全部
Problem : 2029 ( Palindromes _easy version ) Judge Status : Accepted
RunId : 1458531 Language : C Author : afei
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,i,j;
char s[100];
scanf("%d",&n);
getchar();
while(n--)
{
gets(s);
m=strlen(s);
for(i=0,j=m-1;j-i>=0;i++,j--)
{
if(s[i]!=s[j])
{
printf("no\n");
break;
}
}
if(j<=i)
printf("yes\n");
}
return 0;
}
自己看下吧,不懂再问 ,你的程序,我建议你输出form和to的值看一下,这样你就很清楚你错在哪里了,我这个算法是我还没有优化的,几个月前做的,现在我知道了一个更快的算法,就是用strrev函数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式