zoukankan      html  css  js  c++  java
  • uva 340 MasterMind Hints

    这道题真的是挺水的,很简单啦,不过既然写了,我还是贴上我的代码吧

    题目大意是这样的

    Master-Mind是一种2个人的游戏。 其实就是学生常玩的几A几B的游戏(规则或许有些许不同)。 其中一个人担任出题者,他选一串1到9数字 当作密码(可以重复)。 另一个人为解题者,他要去猜密码为何。 解题者每次猜测后,出题者以某种格式回答他这次猜的结果。 在游戏开始之前,双方先协议密码的长度,假设是n。 在出题者设定密码(s1,s2,...sn) 后,由解题者来猜(g1,g2,...gn)。 如 果同样位置gi=si, 那解题者得到一个A。 如果gi=sj,但i不等于j,那解题者得到一个B。 请注意:不管是得A或得B,每个 gi最多只能对应到一个sj,而且得A比得B优先。 举例说明:密码为1 2 3 4,若猜题者猜1 1 5 6,那出题者应该回答1A0B,而不是0A1B。 如果某个猜测得到 nA0B,那就代表猜题者完全猜中密码了。

    下面是代码写的可能复杂些,我没优化,今天做得太多了,累的要命,就不再优化了

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 int main()
     4 {
     5     int x, y, n, i, k = 1, code[1020], _code[1020], j, code1[1020];
     6     while(scanf("%d",&n) && n)
     7     {
     8         for(i = 0;i < n; i++)
     9         {
    10             scanf("%d",&code[i]);
    11             code1[i] = code[i];
    12         }
    13         int flag = 0;
    14         for(i = 0;i < n; i++)
    15         {
    16             scanf("%d",&_code[i]);
    17             if(_code[i] != 0)
    18                 flag = 1;
    19         }
    20         printf("Game %d:\n",k++);
    21         while(flag)
    22         {
    23             x = 0;
    24             y = 0;
    25             for(i = 0;i < n; i++)
    26                 if(code[i] == _code[i])
    27                 {
    28                     x++;
    29                     _code[i] = code[i] = 0;
    30                 }
    31             for(i = 0;i < n; i++)
    32             {
    33                 for(j = 0;j < n; j++)
    34                 {
    35                     if((code[i] == _code[j]) && _code[j])
    36                     {
    37                         _code[j] = code[i] = 0;
    38                         y++;
    39                         break;
    40                     }
    41                 }
    42             }
    43             for(i = 0;i < n;i++)
    44                 code[i] = code1[i];
    45             printf("    (%d,%d)\n",x,y);
    46             flag = 0;
    47             for(i = 0;i < n; i++)
    48             {
    49                 scanf("%d",&_code[i]);
    50                 if(_code[i] != 0)
    51                 flag = 1;
    52             }
    53         }
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    python的类基础
    python导入模块
    python常用的内置函数
    python基础一数据类型之集合
    python函数-匿名函数
    python的函数(三)
    python的函数(二)
    python的函数(一)
    BZOJ4104:[Thu Summer Camp 2015]解密运算——题解
    BZOJ4033:[HAOI2015]树上染色——题解
  • 原文地址:https://www.cnblogs.com/SDUTYST/p/2532196.html
Copyright © 2011-2022 走看看