#include <stdio.h>
#include <string.h>
char c[100]={'\0'};
char mirror[]="AAE3HHIIJLLJMMOOS2TTUUVVWWXXYYZ500112S3E5Z88"; //建立鏡像對照表
int is_mirror(char a, char b){
for(int i=0;i<strlen(mirror);i++){
if(a==mirror[i] && b==mirror[i+1]){ //如果此字元和下一字元比較相同,傳回1
return 1;
}
}
//沒回傳則傳回0
return 0;
}
int main(){
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
while(scanf("%s",c)!=EOF){
for(int i=0;i<100;i++)if(c[i]==' ')c[i]='\0'; //把字串之後的空白也初始化為\0
int ispalin=1 , ismirror=1;
//printf("%d\n", strlen(c));
for(int i=0;i<strlen(c)/2;i++){//比較回文
if(c[i]!=c[strlen(c)-i-1]){
ispalin=0;
}
}
for(int i=0;i<strlen(c);i++){//比較字串
if(!is_mirror(c[i], c[strlen(c)-i-1])){
ismirror=0;
}
}
if(ispalin && !ismirror)printf("%s -- is a regular palindrome.\n\n",c);
if(!ispalin && ismirror)printf("%s -- is a mirrored string.\n\n",c);
if(ispalin && ismirror)printf("%s -- is a mirrored palindrome.\n\n",c);
if(!ispalin && !ismirror)printf("%s -- is not a palindrome.\n\n",c);
for(int i=0;i<25;i++)c[i]='\0';
}
return 0;
}
2014年9月3日星期三
[UVa] 401 - Palindromes
訂閱:
發佈留言 (Atom)
-
因為先前寫UVa時,檔案名稱有時會花心思改,有時就直接把題目名稱加上.cpp就貼上了 導致現在有不同的格式出現 現在要處理的事情很簡單 1. 去除空白 2. 將底線 ( _ ) 換成dash ( - ) 經過一番查詢,終於發現最簡單的方法 - re...
-
文章出處: http://infbugs.blogspot.tw/2011/12/c_20.html 謝謝沙耶,解答了我長久以來對於 input/output 的疑惑。 C 語言入門 - 在線上批改系統練功 如何練習使用基本語法 自己出個練習題試著寫...
-
一開始用數學方法推斷得出,設輸入為n k為在n的前一斜線列數,故只要找到 (1+k)*k/2 < n 的最大k值,即可判定 k%2 == 1 => ((2*n)-(k*k)-k)/2 / ((k*k)+(3*k)-(2*n)+4)/2 k%2 ==...
沒有留言:
發佈留言