今天把NOIP 2009的所有题目做了一遍,当做考试来做,结果只做出了这一题,而且还只有90分。。死心了。。
代码如下:
/*要注意:
* 1.\'A\'-\'Z\'扫描完毕就停止, (不管内容还有没有~!)
* 2,长度小于26就Failed
* 3,二者是一一对应的关系
* 4,输入的字符串是密子, 不是原信息
*/
#include <stdio.h>
**char** map[26], mapp[26];
**char** string[101];
**char** start[101], end[101];
**int** main(**void**)
{
**int** count = 0;
**int** i;
scanf(%s, end); //输入的时候写成了%s\\n,,
scanf(%s, start);
scanf(%s, string);
i = 0;
**while**(count < 26 && end[i] != \'\\0\'){
**if**(((map[end[i] - \'A\'] > 0) && (map[end[i] - \'A\'] != start[i])) ||
((mapp[start[i] - \'A\'] > 0) && (map[start[i] - \'A\'] != end[i]))){
//两种数据是一一对应的~!
**break**;
}
**if**(map[end[i] - \'A\'] == 0){ //忘记给count递增了..
map[end[i] - \'A\'] = start[i];
mapp[start[i] - \'A\'] = end[i];
//两种数据是一一对应的~!
count++;
}
i++; //掉了i++
//差点提交了, 要把i放在判断的外面才行
}
**if**(count != 26){
printf(Failed\\n);
**return** 0;
}
i = 0; //忘记赋值了
**while**(string[i] != \'\\0\'){
putchar(map[string[i] - \'A\']);
i++; //掉了i++
}
putchar(\'\\n\');
**return** 0;
}
顺便提一下,上面的代码是使用Vim转换的!