UVa 340 猜数字游戏的提示
2014-03-10 23:42
302 查看
题意:题目看起来有点难,特别是看到choose、max的时候,其实认真看完,就是对比两行,相同位置元素相同,则是强匹配;否则,元素相同,而位置不同,则是弱匹配。
思想:强匹配,过一遍,对比相应位置,相同则+1,即可;弱匹配,它是要把之前的强匹配过的不进行匹配的,而且一个元素只能弱匹配成功一次,即一个元素匹配成功一次后不再匹配。这里我用的是指示数组,在弱匹配时,查找该bool数组,如果已经访问过,即匹配过(为1),则跳过。我觉得这里其实也可以把匹配成功过的元素修改为其他数字,比如0,但是要对secret进行副本的复制、即要保留原来值,比如这里用char数组存,然后strcpy拷贝副本进行处理。好吧,理解了这个题的意思后,这个题就基本水题了,可做的方法就很多了~
注意:就是在计算弱匹配的时候,怎样修改指示数组,以及continue和break的地方。
自己要注意的:int型数组a, scanf("%d",&a[i]); 数组名是地址,但具体数组的一个元素时,它是int型的,所以还要&.
Code:
思想:强匹配,过一遍,对比相应位置,相同则+1,即可;弱匹配,它是要把之前的强匹配过的不进行匹配的,而且一个元素只能弱匹配成功一次,即一个元素匹配成功一次后不再匹配。这里我用的是指示数组,在弱匹配时,查找该bool数组,如果已经访问过,即匹配过(为1),则跳过。我觉得这里其实也可以把匹配成功过的元素修改为其他数字,比如0,但是要对secret进行副本的复制、即要保留原来值,比如这里用char数组存,然后strcpy拷贝副本进行处理。好吧,理解了这个题的意思后,这个题就基本水题了,可做的方法就很多了~
注意:就是在计算弱匹配的时候,怎样修改指示数组,以及continue和break的地方。
自己要注意的:int型数组a, scanf("%d",&a[i]); 数组名是地址,但具体数组的一个元素时,它是int型的,所以还要&.
Code:
#include<stdio.h> #include<string.h> #define MAXN 1010 int sct[MAXN]; int gus[MAXN]; bool s[MAXN]; bool g[MAXN]; int main() { int n; int i=0;//Game数 while((scanf("%d",&n)==1) && n) {//一次Game i++; printf("Game %d:\n",i); for(int i=0;i<n;++i) scanf("%d",&sct[i]);//数组名是地址,但具体每个元素,还是int型,所以要用&。写的时候也犹豫了 bool flag=1; while(flag) {//一次guess memset(s,0,sizeof(s)); memset(g,0,sizeof(g)); for(int i=0;i<n;++i) { scanf("%d",&gus[i]); if(gus[i]==0) flag=0; } if(flag==0) continue;//其实相当于break; //计算强匹配数 int strm=0; for(int i=0;i<n;++i) { if(gus[i]==sct[i]) { strm++; s[i]=g[i]=1; } } //计算弱匹配数 int wekm=0; for(int i=0;i<n;++i) { if(s[i]) continue;//该位置已访问过,即属于强匹配 for(int j=0;j<n;++j) { if(g[j]) continue; if(sct[i]==gus[j]) { wekm++; g[j]=1; break;}//注意break,匹配到一个之后就不再重复匹配 } }//for //输出 printf(" (%d,%d)\n",strm,wekm); }//while_flag }//while return 0; }
相关文章推荐
- UVa 340 Master-Mind Hints(猜数字游戏的提示)
- UVA 340 Master-Mind Hints 猜数字提示的游戏 简单模拟
- 猜数字游戏的提示( Master-Mind Hints UVA - 340)
- UVA340-猜数字游戏的提示
- UVa 340 Master-Minds Hints(猜数字游戏的提示)
- UVa 340 猜数字游戏提示(Master-Mind-Hints)
- 3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)
- UVa 340 Master-Mind Hints(猜数字游戏的提示)
- 猜数字游戏的提示 (Master-Mind Hints, UVa 340)
- 例题3-4 猜数字游戏的提示 UVa340
- uva 340 -----Master-Mind Hints(猜数字游戏的提示)
- 例题3_4 猜数字游戏的提示(UVa340)
- UVa 340 猜数字游戏的提示
- uvaoj-340:猜数字游戏的提示
- UVaOJ 340 猜数字游戏的提示
- 猜数字游戏的提示(Master-Mind Hints, UVa 340)
- 猜数字游戏的提示(Master-Mind Hints, UVa 340)
- Uva 340 猜数字的游戏
- UVA 340 Master-Mind Hints 猜密码游戏(水)
- 猜数字游戏的提示(UVa 340)