题意:
题目很长,自己看吧,说几个注意点:
1、如果猜的字不合法(长度不等于5或者有小写字母),则输出上次猜字的结果。(第一次猜字的结果就是原字符串第一个字+"....")
2、如果超过5次没猜出来或者输入结束,用小写字母输出原字符串
3、如果5次之内猜出,则不处理下面的数据(照常读入)
然后测试数据有个bug,第一行有一个空行。。
代码:
1
# include <cstdio>
2
# include <cstring>
3
using namespace std;
4
bool illegal(char *str)
5

{
6
if(strlen(str)>5) return true;
7
for(int i=0;i<5;i++)
8
if(str[i]<'A'||str[i]>'Z')
9
return true;
10
return false;
11
}
12
int 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