zoukankan      html  css  js  c++  java
  • 例题3-4 master-mind hints

    下面先附上我的水货代码,,,,一会附上,,,刘大婶给的代码///////3ms

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int A,B,W=0,t,n,m,i,j,q,a[1111],b[1111],c[1111];
        while(scanf("%d",&t),t)
        {
            W++;
            printf("Game %d:
    ",W);
            for(A=B=i=0;i<t;i++)
            {
                scanf("%d",&a[i]);
            }
            for(;;)
            {
                for(A=B=i=0;i<t;i++)
                {
                    scanf("%d",&b[i]);
                }
                for(i=0;i<t;i++)
                    c[i]=a[i];
                //strcpy(c,a);
                for(q=i=0;i<t;i++)
                {
                    if(b[i]==0)
                        q++;
                }
                if(q==t)
                    break;
                for(i=0;i<t;i++)
                {
                    if(a[i]==b[i])
                        A++;              //这个是序号能对应上的  个数....
                }
                for(i=0;i<t;i++)           //原版是a[i].c[i]是原版的复制品...b[i]是猜测的
                {
                    for(j=0;j<t;j++)
                    {
                        if(c[i]==b[j])
                        {
                            c[i]=b[j]=-741258;
                            B++;
                            break;
                        }
                    }
                }
                printf("    (%d,%d)
    ",A,B-A);
            }
        }
    }

     下面附上刘大婶的代码...相对来说人家的   又简单,时间复杂度又低

    #include<stdio.h>
    #define maxn 1010
    int main()
    {
        int A,B,i,n,d,a[maxn],b[maxn];
        int kase=0;
        while(scanf("%d",&n),n)
        {
            printf("Game %d:
    ",++kase);
            for(i=0;i<n;i++)             //   这是需要猜的数组.
                scanf("%d",&a[i]);
            for(;;)    //汗,  这里和大婶想的挺像的.
            {
                A=B=0;
                for(i=0;i<n;i++)         //这是  你猜的数组
                {
                    scanf("%d",&b[i]);
                    if(a[i]==b[i])      //在输入的时候就顺便得到了对应位置相同的  数字.
                        A++;
                }
                if(b[0]==0)// 英文题目上已经说过.
                    break;
                for(d=1;d<=9;d++)
                {
                    int c1=0,c2=0;    //
                    for(i=0;i<n;i++)
                    {
                        if(a[i]==d)   //统计一下   需要被猜的数组里面 1的个数
                            c1++;    
                        if(b[i]==d)   //统计一下   猜测数列里1的个数.
                            c2++;
                    }
                    if(c1<c2)         //然后将   相同的 加起来
                    {
                        B=B+c1;
                    }
                    else
                    {
                        B=B+c2;
                    }
                }
                  printf("    (%d,%d)
    ",A,B-A);
            }
        }
        return 0;
    }
  • 相关阅读:
    CodeForces 288A Polo the Penguin and Strings (水题)
    CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
    CodeForces 289A Polo the Penguin and Segments (水题)
    CodeForces 540C Ice Cave (BFS)
    网站后台模板
    雅图CAD
    mbps
    WCF学习-协议绑定
    数据库建表经验总结
    资源位置
  • 原文地址:https://www.cnblogs.com/A-FM/p/5100124.html
Copyright © 2011-2022 走看看