现在的位置: 首页 > 综合 > 正文

uva 401

2013年08月24日 ⁄ 综合 ⁄ 共 2330字 ⁄ 字号 评论关闭
代码写得有点小繁琐,见谅吧....懒得再算数组顺序了
#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;  
}  

抱歉!评论已关闭.