嗜血魂K

导航

NOIP09 潜伏者

模拟模拟....一开始头有点晕....打了盘dota一下就想到了= =

开两个数组保存明文暗码分别对应字母,初始化0

读入前两个字符串,枚举,若未记录则记录下来,并且用一个变量保存存了多少对关系,不满足都为0(即都填上了) 就比较一下......

呃- - 语文不好..看代码拉..个人觉得代码比较简洁

#include<stdio.h>
#include<string.h>
#define MAXN 100
#define MAXLEN 1000
char q[MAXN], a[MAXN];
int main(void)
{
int n = 0, i, l, ok = 1;
char s1[MAXLEN], s2[MAXLEN];
memset(q, 0, sizeof(q));
memset(a, 0, sizeof(a));
fscanf(stdin, "%s", s1);
fscanf(stdin, "%s", s2);
l = strlen(s2);
for(i = 0; i < l; i++)
{
if(!q[s1[i]] && !a[s2[i]]) { q[s1[i]] = s2[i]; a[s2[i]] = s1[i]; n++; }
else if(q[s1[i]] != s2[i] || a[s2[i]] != s1[i]) { ok = 0; break; }
}
if(!ok || n != 26) printf("Failed");
else
{
fscanf(stdin, "%s", s1);
l = strlen(s1);
for(i = 0; i < l; i++) printf("%c", q[s1[i]]);
}
putchar('\n');
return 0;
}



posted on 2011-11-06 01:46  嗜血魂K  阅读(209)  评论(0编辑  收藏  举报