现在的位置: 首页 > 综合 > 正文

hdu 1172 (暴力水题)

2014年02月26日 ⁄ 综合 ⁄ 共 709字 ⁄ 字号 评论关闭

点击打开链接

刚开始方法用复杂了,WA了。

后来直接暴力从1000-9999,一次,比较,求出相同数字的个数个位置正确的数目;

注意遍历完,求出满足所有的数字的个数,如果为1说明可以确定,否则不可以。

#include"stdio.h"
#include"string.h"
#define N 101
struct node
{
	int z,x,y;
}A[N];
int n;
int c1,c2;
void judge(int n,int m)
{
	int i,nn,mm;
	int a[10],b[10];
	nn=n;mm=m;
	c1=c2=0;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	while(n)
	{
		a[n%10]++;
		b[m%10]++;
		if(n%10==m%10)c2++;
		n/=10;
		m/=10;
	}
	for(i=0;i<10;i++)
		c1+=a[i]<b[i]?a[i]:b[i];
}
int main()
{
	int i,j,t,m,cnt;
	while(scanf("%d",&n)!=-1&&n)
	{	
		for(i=0;i<n;i++)
			scanf("%d%d%d",&A[i].x,&A[i].y,&A[i].z);
		cnt=0;
		for(i=1000;i<=9999;i++)
		{
			t=0;
			for(j=0;j<n;j++)
			{		
				judge(i,A[j].x);
				if(c1==A[j].y&&c2==A[j].z)t++;
				else break;		
			}
			if(cnt==0&&t==n)m=i;
			if(t==n)cnt++;
		}
		if(cnt==1)printf("%d\n",m);
		else printf("Not sure\n");
	}
	return 0;
}


抱歉!评论已关闭.