您的位置:首页 > 其它

uvaoj-401-Palindromes

2014-02-09 14:50 246 查看
比较简单的题目,WA了一次是没看清英文题目的要求。

/*
uvaoj:  401
PROB:   Palindromes
*/
#include<stdio.h>
#include<string.h>
#define LOCAL
char st[25];
char reverse1[100] = "AEHIJLMOSTUVWXYZ12358";
char reverse2[100] = "A3HILJMO2TUVWXY51SEZ8";
int r;
int is_regular( char st[] );
int is_mirrored( char st[] );
int main()
{
r = strlen(reverse1);
#ifdef LOCAL
freopen("Palindromes.in.txt", "r", stdin);
freopen("Palindromes.out.txt", "w", stdout);
#endif // LOCAL
while( gets(st) != NULL )
{

int m, n;
int len = strlen(st);
m = is_regular(st);
n = is_mirrored(st);
if(m)
{
if(n)   printf("%s -- is a mirrored palindrome.\n", st);
else    printf("%s -- is a regular palindrome.\n", st);
}
else
{
if(n)   printf("%s -- is a mirrored string.\n", st);
else    printf("%s -- is not a palindrome.\n", st);
}
printf("\n");
}
return 0;
}
int is_regular( char st[] )
{
int i, j, len, yes=1;
char s[30];
strcpy(s,st);
len = strlen(s);
for( i=0; i<len/2; i++ )
if( s[i] != s[len-1-i] )
{
yes = 0;
break;
}
return yes;
}
int is_mirrored( char st[] )
{
int yes = 1;
char s1[30], s2[30];
strcpy(s1,st);
strcpy(s2,st);
int i, len, n;
len = strlen(s1);
for( i=0; i<len; i++ )
{
int found = 0;
for(n=0; n<r; n++)
{
if(s1[i] == reverse1
)
{ s1[i] = reverse2
;   found = 1;   break;  }
}
if(!found)  return 0;
}
strcat(s2,s1);
if( is_regular(s2) )
return 1;
else
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: