zoukankan      html  css  js  c++  java
  • UVA340 UVALive5448 Master-Mind Hints

    Regionals 1995 >> North America - North Central NA

    问题链接:UVA340 UVALive5448 Master-Mind Hints基础训练题,用C语言编写程序。

    题意:输入多组测试用例,每个用例第1个数为n,n=0时结束。后面有若干行,每行输入n个正整数(值范围为1到9),第1行是n个秘密数(需要猜测的数),第2行开始是猜测的n个数,若猜测的n个数全为0则结束进入下一个测试用例。

    求的是,猜测的n个数有几个相同(位置和值与值都相同),有几个相关(值相同而位置不同)。

    网上相同版本的使用暴力法的程序居多,大概出自一人之手。可是,编写程序是要用巧,哪能动不动就暴力。

    另外,编写程序需要考虑通用性,使用宏定义是值得推荐的一种做法。

    程序中,使用数组digitcount_s[]和digitcount_i[]来统计各种值出现的次数,这使得计算结果变得简单。

    AC的C语言程序如下:

    /* UVA340 UVALive5448 Master-Mind Hints */
    
    #include <stdio.h>
    #include <memory.h>
    
    #define MIN(a, b)   (((a) > (b)) ? (b) : (a))
    
    #define VALNUM 10
    
    #define MAXN 1000
    
    int secret[MAXN];
    int guess[MAXN];
    
    int main(void)
    {
        int caseno=1, n, i;
        int strong, independent;
        int digitcount_s[VALNUM], digitcount_i[VALNUM];
    
        while(scanf("%d", &n) != EOF && n != 0) {
            printf( "Game %d:
    ", caseno++ );
    
            memset(digitcount_s, 0, sizeof(digitcount_s));
            for(i=0; i<n; i++) {
                scanf( "%d", &secret[i] );
    
                digitcount_s[secret[i]]++;
            }
    
            for(;;) {
                int sum = 0;
    
                strong = 0;
                independent = 0;
    
                memset(digitcount_i, 0, sizeof(digitcount_i));
    
                for(i=0; i<n; i++) {
                    scanf( "%d", &guess[i] );
                    sum += guess[i];
    
                    if(guess[i] == secret[i])
                        strong++;
    
                    digitcount_i[guess[i]]++;
                }
                if(sum == 0)
                    break;
    
                for(i=1; i<VALNUM; i++)
                    independent += MIN(digitcount_s[i], digitcount_i[i]);
    
                printf("    (%d,%d)
    ", strong, independent - strong);
            }
        }
    
        return 0;
    }


  • 相关阅读:
    iOS学习-UITextField
    iOS学习-UIButton->Block
    iOS学习-UIButton
    iOS常用技术-微信下标栏
    学习进度表
    学习进度表
    读后感
    我的学习进度表
    调查问卷
    我的学习进度表
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564535.html
Copyright © 2011-2022 走看看