Hangman Judge 刽子手游戏UVA 489

来源:互联网 发布:知彼而知己是什么意思 编辑:程序博客网 时间:2024/06/08 18:57
  1. #include<cstdio>
  2. #include<string.h>
  3. #include<set>
  4. using namespace std;
  5. const int maxn=100;
  6. char s[maxn],s1[maxn];
  7. int count=0;//表示错的次数
  8. int right=0;//猜对次数 
  9. bool guess (char c){
  10.     for(int i=0;i<strlen(s);i++){
  11.         if(c==s[i]){
  12.             right++;
  13.             for(int j=i;j<strlen(s);j++){
  14.                 if(s[j]==c)s[j]=' ';
  15.             }
  16.             return true;
  17.         }
  18.     } 
  19.     return false;
  20. }
  21. int main(){
  22.     int n;
  23.     while(scanf("%d",&n)==1 && n!=-1){
  24.         scanf("%s%s",s,s1);
  25.         printf("Round %d\n",n);
  26.       count=0;
  27.       right=0;    
  28. //set集合用来计算s当中有几个不同的字母
  29.       set<char>st;
  30.       for(int i=0;i<strlen(s);i++){
  31.         st.insert(s[i]);
  32.       } 

  33.         int ok=0,failed=0;
  34.         for(int i=0;i<strlen(s1);i++){
  35.          bool flag=guess(s1[i]);
  36.          if(!flag)count++;
  37. //刚开始这几条语句没放在里面做了两次,只要猜完所有字母就算赢了,然后退出循环
  38.          if(count<7 && right==st.size())ok=1;
  39.          if(count>=7)failed=1;
  40.          if(failed && ok)break;
  41.         }

  42.          if(ok)printf("You win.\n");
  43.          else if(failed)printf("You lose.\n");
  44.          else printf("You chickened out.\n");
  45.     }
  46.     return 0;
1 0