uva340 - Master-Mind Hints

来源:互联网 发布:淘宝小卖家怎么生存 编辑:程序博客网 时间:2024/04/24 18:29

链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=276


code


#include<stdio.h>#define maxn 1010int main(){int n ,a[maxn],b[maxn];int gameCase = 1;while(scanf("%d",&n) == 1 && n){printf("Game %d:\n",gameCase++);for(int i = 0; i < n ; i ++) scanf("%d",&a[i]);while(true){int A = 0, B = 0;for(int i = 0 ; i < n ; i ++){scanf("%d",&b[i]);if(b[i] == a[i]) A++;}if(!b[0]) break;for(int d = 1 ; d <= 9 ; d ++){int c1 = 0, c2 = 0;for( int i = 0 ; i< n ; i ++){if( a[i] == d ) c1 ++;if( b[i] == d ) c2 ++;}if( c1 < c2) B += c1; else B += c2;}printf("    (%d,%d)\n", A, B-A);}}return 0;}



注意事项是先统计在两个序列位置正确的个数A,再统计对于每个数字都有贡献的B,c1,c2是在两个序列中数字1~9出现的次数,min(c1,c2)则是对于B的贡献。最后减去公共部分A,则得到出现但是位置不对的次数

0 0
原创粉丝点击