您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: