zoukankan      html  css  js  c++  java
  • 猜数字游戏的提示

    题目

    实现一个经典“猜数字”游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)。

    输入包含多组数据。每组输入第一行为序号长度为n,第二行是答案序列,

    接下来是若干猜测序列。猜测序列全0时该数组结束。n=0时输入结束。

    样例输入:

    4

    1 3 5 5

    1 1 2 3

    4 3 3 5

    6 5 5 1

    6 1 3 5

    1 3 5 5

    0 0 0 0

    10

    1 2 2 2 4 5 6 6 6 9

    1 2 3 4 5 6 7 8 9 1

    1 1 2 2 3 3 4 4 5 5

    0 0 0 0 0 0 0 0 0 0

    0

    样例输出:

    Game 1:

    (1,1)

    (2,0)

    (1,2)

    (1,2)

    (4,0)

    Game 2:

    (2,4)

    (3,2)

    分析

    直接统计可得A,为了求B,对于每个数字(1~9),统计二者出现的次数 c1和c2,

    则min(c1,c2)就是该数字对B的贡献。最后要减去A的部分。

    c实现代码如下:

    #include<stdio.h> 
    #define maxn 1010
    
    int main()
    {
        int n,a[maxn],b[maxn];
        int kase=0;
        while(scanf("%d",&n)==1&&n)
        {
            printf("Game %d:
    ",++kase);
            //给出答案序列 
            for(int i=0;i<n;i++)
            {
                scanf("%d",&a[i]);
            }
            
            //猜测序列 
            for(;;)
            {
                int A=0,B=0;
                //输入猜测序列,并判断位置正确 的数字个数 
                for(int i=0;i<n;i++)
                {
                    scanf("%d",&b[i]);
                    if(a[i]==b[i])
                        A++;
                }
                //正常的猜测序列不会有0,所以只判断第一个数是否为0即可 
                if(b[0]==0) break;
                for(int d=1;d<=9;d++)
                {
                    int c1=0,c2=0; //统计数字d在答案序列和猜测系列中各出现多少次
                    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)
    ",A,B-A);
            }
        }
        return 0;
    }
    
    //直接统计可得A,为了求B,对于每个数字(1-9),统计二者出现的次数c1和c2,
    //则min(c1,c2)就是该数字对B的贡献。最后要减去A的部分。 
  • 相关阅读:
    jquery中 append 和appendto的区别
    vb的property 和event
    VB 基础语法以及教学视频
    outlook 2007 IMAP设置和配置
    浏览器文档播放Shockwave Flash 插件问题
    VB execl文件后台代码,基础语法
    VB中后台打开Excel文件实现代码
    excel文件后台代码
    DataTable中执行DataTable.Select("条件"),
    多个不同的表合并到一个datatable中,repeater在绑定datatable
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/12920182.html
Copyright © 2011-2022 走看看