uva 401
来源:互联网 发布:游戏编程软件下载 编辑:程序博客网 时间:2024/05/16 12:26
代码写得有点小繁琐,见谅吧....懒得再算数组顺序了
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; int is_palindrome( char str[] ); int is_mirrored( char str[] ); int main() { int value; char str[1000]; while( cin >> str ) { value = 0; value += is_palindrome( str ); value += is_mirrored( str ); switch( value ) { case 0: cout << str << " -- is not a palindrome." << endl; break; case 1: cout << str << " -- is a regular palindrome." << endl; break; case 2: cout << str << " -- is a mirrored string." << endl; break; case 3: cout << str << " -- is a mirrored palindrome." << endl; break; } cout << endl; } return 0; } int is_palindrome( char str[] ) { int len = strlen(str); for( int i = 0; i < len; i++ ) { if( (str[i] == '0' || str[i] == 'O') && (str[len-i-1] == '0' || str[len-i-1] == 'O')) continue; if( str[i] != str[len-i-1] ) return 0; } return 1; } int is_mirrored( char str[] ) { int a, b; int len = strlen(str); for( int i = 0; i < len; i++ ) { a = i; b = len-i-1; if( a != b ) { if( !(str[a] == 'A' || str[a] == 'E' || str[a] == 'H' || str[a] == 'I' || str[a] == 'J' || str[a] == 'L' || str[a] == 'M' || str[a] == 'O' || str[a] == 'S' || str[a] == 'T' || str[a] == 'U' || str[a] == 'V' || str[a] == 'W' || str[a] == 'X' || str[a] == 'Y' || str[a] == 'Z' || str[a] == '1' || str[a] == '2' || str[a] == '3' || str[a] == '5' || str[a] == '8' || str[a] == '0' ) ) return 0; if( str[a] == 'A' && str[b] != 'A' ) return 0; else if( str[a] == 'E' && str[b] != '3' ) return 0; else if( str[a] == 'H' && str[b] != 'H' ) return 0; else if( str[a] == 'I' && str[b] != 'I' ) return 0; else if( str[a] == 'J' && str[b] != 'L' ) return 0; else if( str[a] == 'L' && str[b] != 'J' ) return 0; else if( str[a] == 'M' && str[b] != 'M' ) return 0; else if( str[a] == 'O' && !(str[b] == 'O' || str[b] == '0') ) return 0; else if( str[a] == '0' && !(str[b] == 'O' || str[b] == '0') ) return 0; else if( str[a] == 'S' && str[b] != '2' ) return 0; else if( str[a] == 'T' && str[b] != 'T' ) return 0; else if( str[a] == 'U' && str[b] != 'U' ) return 0; else if( str[a] == 'V' && str[b] != 'V' ) return 0; else if( str[a] == 'W' && str[b] != 'W' ) return 0; else if( str[a] == 'X' && str[b] != 'X' ) return 0; else if( str[a] == 'Y' && str[b] != 'Y' ) return 0; else if( str[a] == 'Z' && str[b] != '5' ) return 0; else if( str[a] == '1' && str[b] != '1' ) return 0; else if( str[a] == '2' && str[b] != 'S' ) return 0; else if( str[a] == '3' && str[b] != 'E' ) return 0; else if( str[a] == '5' && str[b] != 'Z' ) return 0; else if( str[a] == '8' && str[b] != '8' ) return 0; } else { if( str[a] != 'A' && str[a] != 'E' && str[a] != 'H' && str[a] != 'I' && str[a] != 'J' && str[a] != 'L' && str[a] != 'M' && str[a] != 'O' && str[a] != 'S' && str[a] != 'T' && str[a] != 'U' && str[a] != 'V' && str[a] != 'W' && str[a] != 'X' && str[a] != 'Y' && str[a] != 'Z' && str[a] != '1' && str[a] != '2' && str[a] != '3' && str[a] != '5' && str[a] != '8' && str[a] != '0' ) return 0; } } return 2; }