UVa 401是个我最喜欢的字符串题目。仅仅比我们C语言课上的判断回文串稍难了些,因为要求你判断两种字串——回文或是镜像。然后根据这东西有四种输出。
CE了五次。。。原因未知。。。
本来写ANSI C的。。怎么提交都是CE。。
后来一气之下把头文件stdio.h、stdlib.h、string.h改为cstdio、cstdlib、cstring提交为C++,其他均无改动,直接AC。。
之后想想可能是因为我的C不够ANSI。。。。
附AC代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include <cstdio> #include <cstdlib> #include <cstring>
char revletter(char a){ char table[]="A@@@3@@HIL@JM@O@@@2TUVWXY51SE@Z@@8@"; int xt; if(a>='A'&&a<='Z'){ xt=a-65; }else if(a>='1'&&a<='9'){ xt=a-23; }else{ xt=34; } return table[xt]; } int main(){ char str[200],temp; int len,i; int reFlag,miFlag; int si; while(scanf("%s",str)!=EOF){ reFlag=miFlag=1; len=strlen(str); for(i=0;i<len/2;i++){ if(str[i]!=str[len-1-i]){ reFlag=0; } if(str[i]!=revletter(str[len-1-i])){ miFlag=0; } } if(len%2!=0){ temp=str[len/2]; if(temp!=revletter(temp)){ miFlag=0; } } si=reFlag*2+miFlag; switch(si){ case 0: printf("%s -- is not a palindrome.nn",str); break; case 1: printf("%s -- is a mirrored string.nn",str); break; case 2: printf("%s -- is a regular palindrome.nn",str); break; case 3: printf("%s -- is a mirrored palindrome.nn",str); break; } }
return 0;
}
|
java写累了,想换回C来水一题,结果失败了。。。
嗯,反正我今天主要就是想注册UVa,部署我的FeelyBlog,下个Java。。目的都达到了,只是顺手水了几题。。
我还是继续补番去比较好。。