欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ACM HDU 1172 猜数字

程序员文章站 2022-05-22 12:26:25
...

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;
}


转载于:https://www.cnblogs.com/bo-jwolf/archive/2013/04/20/3033087.html