ACM HDU 1172 猜数字

ACM HDU 1172 猜数字

// File Name: hdu1172.cpp
// Author: rudolf
// Created Time: 2013年04月20日 星期六 14时58分47秒

#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>

using namespace std;
const int maxn=101;
bool check1(int num1,int num2,int t)
{
	int a[4],b[4];
	int c[4];
	int i,j;
	for(i=0;i<4;i++)
	{
		a[i]=num1%10;
		num1/=10;
		b[i]=num2%10;
		num2/=10;
		c[i]=0;
	}
	int m=0;
	for(i=0;i<4;i++)
		for(j=0;j<4;j++)
			if(c[j]==0&&a[i]==b[j])
			{
				m++;
				c[j]=1;
				break;
			}
			if(m==t)
				return true;
			else
				return false;
}

bool check2(int num1,int num2,int t)
{
	int a[4],b[4];
	int i,j;
	int m=0;
	for(i=0;i<4;i++)
	{
		a[i]=num1%10;
		num1/=10;
		b[i]=num2%10;
		num2/=10;
		if(a[i]==b[i])
			m++;
	}
	if(m==t)
		return true;
	else
		return false;
}

int main()
{
	int a[maxn],b[maxn],c[maxn];
	int ans,tmpe;
	int n,i,j;
	while(cin>>n,n)
	{
		for(i=0;i<n;i++)
			cin>>a[i]>>b[i]>>c[i];
		ans=0;
		for(i=1000;i<=9999;i++)
		{
			for(j=0;j<n;j++)
			{
				if(check1(i,a[j],b[j])==false)
					break;
				if(check2(i,a[j],c[j])==false)
					break;
			}
			if(j>=n)
			{
				ans++;
				tmpe=i;
			}
			if(ans>=2)
				break;
		}
		if(ans==0||ans>=2)
			cout<<"Not sure"<<endl;
		else
			cout<<tmpe<<endl;
	}
return 0;
}


posted @ 2013-04-20 15:08  bo_jwolf  阅读(197)  评论(0编辑  收藏  举报