标签:
题目链接:https://uva.onlinejudge.org/external/4/489.pdf
这个题很像之前的一个拓扑排序的题目,思路类似咯。
程序模块化:
每次判断一个字母,lose,win确定就直接退出。
小技巧:
你可以用数组guess[]记录每个字母是否访问过。要是已经访问过,counts++,算是一种错误。
这里汝佳的小技巧是,每次把相同的字符赋值为‘ ’,记录一下str1的长度,查完str1就win。否则就是You chickened out.
#include <stdio.h> #include <string.h> int win ,lose; int left; int counts = 0; char str1[110],str2[110]; void guess(char ch) { bool flag = false; for(int i=0;i<strlen(str1);i++) { if(ch==str1[i]) { str1[i] = ‘ ‘; flag = true; left--; } } if(!flag) counts++; if(counts>6) lose = 1; if(left==0) win = 1; } int main() { freopen("input.txt","r",stdin); int cases; while(scanf("%d",&cases)) { counts = 0; if(cases==-1) break; printf("Round %d\n",cases); scanf("%s%s",str1,str2); win = lose = 0; left = strlen(str1); for(int i=0;i<strlen(str2);i++) { guess(str2[i]); if(win||lose) break; } if(win) printf("You win.\n"); else if(lose) printf("You lose.\n"); else printf("You chickened out.\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/TreeDream/p/5843428.html