例题3-4 猜数字游戏的提示(Master-Mind Hints)

来源:互联网 发布:淘宝分销受骗例子 编辑:程序博客网 时间:2024/04/16 17:22
#include <iostream>#include <stdio.h>#define maxn 1010using namespace std;int main(){    int n,i;    int a[maxn],b[maxn];    int ca=0;    while(scanf("%d",&n)!=EOF&&n)    {        printf("Game %d:\n",++ca);        for(i=0;i<n;i++)            scanf("%d",&a[i]);        for(;;)        {            int A=0,B=0;            for(i=0;i<n;i++)            {                scanf("%d",&b[i]);                if(a[i]==b[i])                    A++;            }            if(b[0]==0) break;            for(int d=1;d<=9;d++)            {                int c1=0,c2=0;                for(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 取c1 c2中的小值 表示它们相同数量的数字 这些数量和 再减去正确位置的A 即是相同出现过但错位的数量*/

0 0
原创粉丝点击