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 |
Re:each of the elements of the string is changed to its reverse (if it has a reverse)In Reply To:each of the elements of the string is changed to its reverse (if it has a reverse) Posted by:sza at 2006-03-05 00:51:48 > each of the elements of the string is changed to its reverse (if it has a reverse),有歧异。正确理解是如果串中没有reverse则不为mirrored string。但题中的意思给人的感觉是如果存在reverse的情况下则替换,不存在是就不管,而非不存在就直接判断不为mirrored string,害得我WA了好多次。 #include<stdio.h> #include<string.h> char s[100]="ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; char m[100]="A 3 HIL JM O 2TUVWXY51SE Z 8 "; int get_dex(char ch) { int i; for(i=0;i<=34;i++) if(ch==s[i]) return i; } int main() { int l,i,j,flag_m,flag_p; char a[100],str[100]; char p[100],mirror[100],Mirror[100]; while(scanf("%s",a)!=EOF) { l=strlen(a); strcpy(str,a); for(i=0;i<=l-1;i++) if(a[i]=='0') a[i]='O'; for(i=0;i<=l-1;i++) p[l-1-i]=a[i]; flag_p=0; p[l]='\0'; // printf("dd %s\n",p); if(strcmp(a,p)==0) flag_p=1; flag_m=1; for(i=0;i<=l-1;i++) if(m[get_dex(a[i])]==' ') { flag_m=0; break; } if(flag_m==1) { for(i=0;i<l;i++) { int dex=get_dex(a[i]); mirror[i]=m[dex]; } mirror[l]='\0'; for(i=0;i<=l-1;i++) Mirror[i]=mirror[l-1-i]; Mirror[l]='\0'; if(strcmp(Mirror,a)!=0) flag_m=0; } if(flag_p==1&&flag_m==1) printf("%s -- is a mirrored palindrome.\n",str); else if(flag_p==1&&flag_m==0) printf("%s -- is a regular palindrome.\n",str); else if(flag_p==0&&flag_m==1) printf("%s -- is a mirrored string.\n",str); else printf("%s -- is not a palindrome.\n",str); // printf("mirror %s\n",mirror); // printf("pal %s\n",p); printf("\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator