pku1219 L-I-N-G-O: LINGO 很trick的模拟

题意:
题目很长,自己看吧,说几个注意点:
1、如果猜的字不合法(长度不等于5或者有小写字母),则输出上次猜字的结果。(第一次猜字的结果就是原字符串第一个字+"....")
2、如果超过5次没猜出来或者输入结束,用小写字母输出原字符串
3、如果5次之内猜出,则不处理下面的数据(照常读入)

然后测试数据有个bug,第一行有一个空行。。

代码:

 1# include <cstdio>
 2# include <cstring>
 3using namespace std;
 4bool illegal(char *str)
 5{
 6    if(strlen(str)>5return true;
 7    for(int i=0;i<5;i++)
 8      if(str[i]<'A'||str[i]>'Z')
 9         return true;
10    return false;
11}

12int main()
13{
14    //freopen("ans.txt","w",stdout);
15    char ori[10];
16    while(gets(ori))
17    {
18        if(!strlen(ori))  continue;
19        if(!strcmp(ori,"LINGO")) break;
20        puts("");
21        int used[26];
22        memset(used,0,sizeof(used));
23        for(int i=0;i<5;i++) used[ori[i]-65]++;
24        char last[10];
25        strcpy(last,ori);
26        for(int i=1;i<5;i++) last[i]='.';
27        puts(last);
28        bool find=false;
29        int count=0;
30        while(true)
31        {
32           char res[10],str[128];
33           res[5]='\0';
34           gets(str);
35           if(!strlen(str)) break;
36           if(!find&&count<5)
37           {
38               if(illegal(str)) puts(last);
39               else
40               {
41                   int c[26];
42                   memcpy(c,used,sizeof(used));
43                   for(int i=0;i<5;i++)
44                     if(str[i]==ori[i])
45                       c[str[i]-65]--,res[i]=str[i];
46                   for(int i=0;i<5;i++)
47                     if(str[i]!=ori[i]&&c[str[i]-65]>0)
48                        c[str[i]-65]--,res[i]=str[i]+32;
49                     else if(str[i]!=ori[i])
50                        res[i]='.';
51                   strcpy(last,res);
52                   puts(res);
53                   if(!strcmp(str,ori)) find=true;
54               }

55               count++;
56           }

57        }

58        if(!find) 
59        {
60           for(int i=0;i<5;i++) ori[i]+=32;
61           puts(ori);
62        }

63    }

64    return 0;
65}

66

posted on 2011-01-16 15:43 yzhw 阅读(182) 评论(0)  编辑 收藏 引用 所属分类: simple problem~


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

公告

统计系统

留言簿(1)

随笔分类(227)

文章分类(2)

OJ

最新随笔

搜索

积分与排名

最新评论

阅读排行榜