您的位置:首页 > 产品设计 > UI/UE

TZU2014年省赛个人热身赛1 1197:Number Guessing

2014-03-29 23:50 267 查看
描述

NumberGuessingisacomputergame.First,thecomputerchoosesfourdifferentdigits,youneedtoguessthesefourdigitsinthefewesttimes,foreachguess,thecomputerwillshowajudgementin
theformof"#A#B","#"isanumber0~4."#A"showshowmanydigitsyouguessedwithbothcorrectvalueandposition."#B"showshowmanydigitsyouguessedwithcorrectvalue.Forexample,thecomputerchose1234,andyouguessed6139,thecomputerwillshow
"1A2B"foryouhavenumber"1"correctvaluebutwrongpositionandnumber"3"correctvaluewithcorrectposition.Thusthecomputergivesyouthejudgementof"1A2B".Nowyouhavememorizedthedigitsyouguessedandthejudgementsyougot,youfeellike
youcanfigureoutthecorrectanswer.Lifeisfilledwithwisdom,isn'tit?

输入

Thereareseveraltestcases.Foreachtestcase,thefirstlinecontainsasinglepositiveintegerNindicatesthetimesyoucanguess,thefollowingNlinesistherecordoftheguess,intheform:

#####A#B

Thefirstfournumbersisthenumbersguessed,thenthejudgementsforyourguess.Theinputisterminatedbyanegativeinteger.

输出

Foreachtestcase,outputasinglelinecontainsexactlyfourdigitsthatthecomputerhaschosen.Youmayassumethateachtestcasegivesyouenoughinformation,soyoucanfigure
outthecorrectanswer.

样例输入
212342A4B12430A4B307323A3B15260A0B45670A2B-1

样例输出
21340734


猜数字,A代表几个数字正确且在正确位置,B为几个大小正确

直接暴力即可

#include<stdio.h>
#include<string.h>
#include<algorithm>
usingnamespacestd;

chars1[10000][10],s2[10000][10];
ints[10];
inthash[10];

intmain()
{
intt,i,j,n,ans;
while(~scanf("%d",&n),n>0)
{
for(i=0;i<n;i++)
scanf("%s%s",s1[i],s2[i]);
for(i=0;i<10000;i++)
{
t=i;
s[3]=t%10;
s[2]=(t/10)%10;
s[1]=(t/100)%10;
s[0]=(t/1000)%10;
if(t/1000>0&&s[0]==s[1]||s[0]==s[2]||s[0]==s[3]||s[1]==s[2]||s[1]==s[3]||s[2]==s[3])
continue;
elseif(t/100>0&&s[1]==s[2]||s[1]==s[3]||s[2]==s[3])
continue;
elseif(t/10>0&&s[2]==s[3])
continue;
intcnt=0;
for(j=0;j<n;j++)
{
inta=0,b=0;
memset(hash,0,sizeof(hash));
hash[s1[j][0]-'0']=hash[s1[j][1]-'0']=hash[s1[j][2]-'0']=hash[s1[j][3]-'0']=1;
for(intk=0;k<4;k++)
{
if(s[k]==s1[j][k]-'0')
a++;
if(hash[s[k]])
b++;
}
if(a==s2[j][0]-'0'&&b==s2[j][2]-'0')
cnt++;
}
if(cnt==n)
{
ans=i;
break;
}
}
printf("%04d\n",ans);
}

return0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: