UVA 401

来源:互联网 发布:photoshop for mac下载 编辑:程序博客网 时间:2024/04/29 19:59
# include <stdio.h># include <string.h>#define N 20int judge(char p[], char t[], int  n) { int i; for(i= 0; i < (n+1) / 2; i++) {if(p[i] != t[i])break; } if(i == (n+1) / 2) return 1; else  return 0;} int judge2(char p[], int l){      char temp[21];  char alpha[] = {'A',' ',' ',' ','3',' ',' ','H',  'I','L',' ','J','M',' ','O',' ',' ',' ','2','T','U','V','W','X','Y','5'}; char num[] = {'1','S','E',' ','Z',' ',' ','8',' '};    int i,j,k;        for(i = 0,j = l-1;i < l;i++,j--){          if(p[i] >= 'A' && p[i] <= 'Z'){              k = p[i] - 'A';              temp[i] = alpha[k];          }          else{              k = p[i] - '1';              temp[i] = num[k];          }          if((temp[i] == '0' && p[j] == 'O') || (temp[i] == 'O' && p[j] == '0')){              continue;          }          if(temp[i] != p[j]){              return 0;          }      }      return 1;  }  int main(){int i = 0;char a[N+1], b[N+1];while(scanf("%s", a) != EOF){int n = strlen(a);for(i =0; i<n; i++){b[i] = a[n-i-1];}int one = judge(a, b, n);int two = judge2(a, n);for(i = 0; i< n; i++){printf("%c", a[i]);}if(one == 0 && two == 0)printf(" -- is not a palindrome.\n\n");else if (one == 1 && two == 0)printf(" -- is a regular palindrome.\n\n");else if (one == 0 && two == 1)printf(" -- is a mirrored string.\n\n");elseprintf(" -- is a mirrored palindrome.\n\n");}return 0;}   差不过算是第一次接触,全英文的题目,所以前几次的理解都有问题,刚开始,把回文和镜像一起判断,最后再根据,回文和镜像的字母是不一样的,做进一布的判断,最后还是选择,通过函数,分别判断回文和镜像,再通过回文和镜像的组合进行输出
0 0
原创粉丝点击