题意:给一个小写字母序列,然后猜测一串序列,每猜到一个字母第一个序列的所以这个字母就显示出来,如果没有猜到就画一笔,画到七笔后就算输,所有字母都显示出来后就算赢,如果没画到7笔并且用来猜测的序列字母已用完,则输出You chickened out
#include <iostream> #include<stdio.h> #include<string> #include<cstring> #include<cmath> #include<algorithm> #define N 22222 using namespace std; char s1[N]; char s2[N]; char a[N]; int main() { int n; while(~scanf("%d",&n)) { if(n==-1)break; scanf("%s%s",s1,s2); int len1=strlen(s1); int len2=strlen(s2); memset(a,0,sizeof a); for(int i=0;i<len1;i++) a[s1[i]-'a']++;//计算出每个字母出现的个数 int ok=0; int i,flag=0; for(i=0;i<len2;i++) { if(a[s2[i]-'a']) { len1-=a[s2[i]-'a']; a[s2[i]-'a']=0;//记得把已经出现过的单词清0,不然会wa,再次出现同样单词算一次猜错,因为该单词已全部显示 } else flag++; if(flag==7){ok=1;break;}//lose if(len1<=0){ok=2;break;}//win } printf("Round %d\n",n); if(ok==1) printf("You lose.\n"); else if(ok==2) printf("You win.\n"); else printf("You chickened out.\n"); } return 0; }