uva 401
2013-04-25 12:53
155 查看
代码写得有点小繁琐,见谅吧....懒得再算数组顺序了
#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; }
相关文章推荐
- UVa - 401 - Palindromes
- UVA 401 Palindromes
- UVa 401 - Palindromes
- uva 401 (2)
- uva 401 Palindromes
- Problem 003——UVa401 - Palindromes
- UVa 401 - Palindromes
- UVa 401 - Palindromes
- UVa 401 回文词(Palindromes)
- UVA - 401 Palindromes (回文串)
- uva 401 Palindromes
- uva 401 Palindromes
- 例题:回文词(UVa401)
- UVA 401 - Palindromes(字符串)
- UVA - 401 Palindromes
- UVA - 401 Palindromes
- Uva 401 Palindromes
- UVa 401 - Palindromes(回文词)
- UVA 401- Palindromes
- UVa 401 Palindromes(字符串,回文)