*UVa 340 Master-Mind Hints(例题3-4)

    xiaoxiao2021-12-14  20

    为什么要加星号?因为这道题的算法和书上大致上是差不多的,不一样的地方是我把输入数组换成读入的时候统计而已

    但是在oj上一直通不过,这我就很懵逼了,也不想把书上的代码打一遍,反正基本上差不多,自己对照一下书上吧

    至于为什么是取最小的一个?应该是“同时出现”,所以取比较小的数据相加得到数字的贡献

    PS:如果发现代码有哪里出现问题请在评论里联系我,谢谢,因为我自己也不知道哪里的问题,oj上的测试数据也都可以过,我已经纠结了两天

    放代码:

    #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; int n,a[11],b[11],c[11],cnt=0,tmp; int main() { while((scanf("%d",&n))==1&&n) { memset(a,0,sizeof(c)); memset(b,0,sizeof(b)); printf("Game %d:\n", ++cnt); for(int i = 0;i<n;i++) { cin>>a[i]; b[a[i]]++; } for(;;) { memset(c,0,sizeof(c)); int sign = 1; int x=0,y=0,c1=0,c2=0; for(int i = 0;i<n;i++) { cin>>tmp; if(tmp==0){sign = 0;} for(int j = 0;j<n;j++) if(a[j]==tmp&&i==j) x++; c[tmp]++; } for(int i = 1;i<=9;i++) y+=min(b[i],c[i]); if(!sign) break; printf(" (%d,%d)\n", x,y-x); } } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-972189.html

    最新回复(0)