UVa 489 侩子手游戏

背景:1_WA:写成这种形式,一旦ok==1,函数就要执行两次,竟然很巧妙的过了样列!看来以后还要自己出五个个变态数据和样例一起提交才ok啊!

if(ok()==0)    .......;
else if(ok()==1)   ......;
else   .....;

2_WA:没有考虑形如:

1

xiao

asdxiaoefg

这种类型,虽然已经win了,还是继续循环,一旦判断为某结果应该立刻退出!!还是自己没有多出点测试数据造成的!!

学习:

#include<stdio.h>
#include<string.h>
#define maxn 105
char a[maxn],b[maxn];

int ok(void){
	int wrong=0,ha=strlen(a),hb=strlen(b);
	for(int i=0;i<hb;i++){
		bool iswrong=true;
		for(int j=0;j<ha;j++){
			if(a[j]==b[i]){
				iswrong=false;
				a[j]=0;
			}
		}
		if(iswrong) wrong++;
		if(wrong==7) return 0;
		bool iswin=true;
		for(int i=0;i<ha;i++){
		if(a[i]!=0) iswin=false;
  	        }
  	if(iswin) return 1;
	}
	return 2;
	
}
 
int main(void){
	  int count;
		while(scanf("%d",&count)&&count!=-1){
			scanf("%s %s",a,b);
			printf("Round %d\n",count);
			int ans=ok(); 
			if(ans==0) printf("You lose.\n");
			else if(ans==1) printf("You win.\n");
			else printf("You chickened out.\n");
		}
} 


你可能感兴趣的:(C++,ACM,uva)