跳至正文

NOIP2009 潜伏者 解题报告

  • OI路程

今天把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转换的!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注