首页 > 其他 > 详细

数字猜想-Hunan University 2008 the 4th Programming Contest

时间:2014-03-15 05:18:54      阅读:475      评论:0      收藏:0      [点我收藏+]

描述

数字猜想是一个电脑游戏。首先,电脑会选择四个不重复的数字,你要根据电脑的提示尽快地猜出这个数字。电脑给的提示形式是“#A#B”,其中“#”是0~4的数字。其中“#A”表示猜中了数字.和位置的数目,“#B”表示猜中数字的数目。比如,电脑选择的是1234,你猜的是6139,电脑给的提示是“1A2B”,因为数字“3”既猜中了数字,也猜对了位置,而数字“1”只猜中了数字,所以电脑给的提示就是“1A2B”。

现在,你仔细记录了你每次猜的数字和电脑的提示,你感觉应该可以猜对结果了。是的,生活中充满了智慧,不是吗?

输入

有多个测试序列。每个测试序列的第一行是一个单独的正整数N,表示猜想的次数,接下来的N行是N次猜想的记录,形式为:

#### #A#B

前面四个数字是猜想的数字,后面是电脑对猜想的提示。

输入N为0或者负整数表示输入结束,并且无须处理。

输出

对于每个测试序列,输出一行,给出电脑选定的数字,要求数字和位置都正确。你可以假设,每个测试序列都提供了足够的信息,让你可以猜出该数字。

样例输入

2
1234 2A4B
1243 0A4B
3
0732 3A3B
1526 0A0B
4567 0A2B
-1

样例输出

2134
0734

#include<iostream>
#include<cstring>
using namespace std;
struct node
{
    char str[5];
    int a,b;
};
node we[1000];
int main()
{
    int a,b,c,d,n,i,j,t[100];
    char ab[5],tem[5];
    while(cin>>n)
    {
        if(n==-1)break;
        for(i=0;i<n;i++)
        {
            cin>>we[i].str>>tem;
            we[i].a=tem[0]-48;
            we[i].b=tem[2]-48;
        }
        for(a=0;a<10;a++)
         for(b=0;b<10;b++)
          for(c=0;c<10;c++)
           for(d=0;d<10;d++)
          {
              //cout<<"frawef"<<endl;
            //if(f==0)break;
            if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
            {
                ab[0]=char(a+48);
                ab[1]=char(b+48);
                ab[2]=char(c+48);
                ab[3]=char(d+48);
                ab[4]=‘\0‘;
                //cout<<c<<endl;
                memset(t,0,sizeof(t));
                t[a]=t[b]=t[c]=t[d]=1;
                for(i=0;i<n;i++)
                {
                    int s=0,x=0;
                    for(j=0;j<4;j++)
                    {
                        if(t[we[i].str[j]-48])s++;
                        if((we[i].str[j])==ab[j]){x++;
                        }
                    }
                    if(s!=we[i].b||x!=we[i].a)break;
                }
                if(i==n)
                {
                    cout<<ab<<endl;
                   // f=0;
                }
            }
        }
    }
    return 0;
}


数字猜想-Hunan University 2008 the 4th Programming Contest,布布扣,bubuko.com

数字猜想-Hunan University 2008 the 4th Programming Contest

原文:http://blog.csdn.net/zhangweiacm/article/details/21242455

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!