#include <iostream.h>
#include <string.h>
int s[24]={
1234,1243,1324,1342,1432,1423,
2134,2143,2314,2341,2431,2413,
3214,3241,3124,3142,3412,3421,
4231,4213,4321,4312,4132,4123};
int comp(int a,int b,int c,int d)
{
char s[5];
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
cin>>s;
return s[0]-‘
}
int comp2(int a,int b,int c,int d)
{
char s[5];
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
cin>>s;
if(s[0]!=4)//顺序还没有完全对
return 0;
else
return 1;
}
int main()
{
int i,j;
int guess[10];
int num[10];
int total=0;
int mydate[4];
int x1,x2,x3,x4,x5,x6;
for(i=0;i<10;i++)
num[i]=0;
for(i=0;i<10;i++)
guess[i]=i;
x1=comp(guess[0],guess[1],guess[2],guess[3]);
if(x1==0)
{
x6=comp(guess[0],guess[1],guess[2],guess[4]);
if(x6!=0)
{
num[4]=1;
total++;
}
}
else if(x1==4)
{
num[0]=1;
num[1]=1;
num[2]=1;
num[3]=1;
total+=4;
goto loop;
}
else
{
x2=comp(guess[4],guess[1],guess[2],guess[3]);
x3=comp(guess[0],guess[4],guess[2],guess[3]);
x4=comp(guess[0],guess[1],guess[4],guess[3]);
x5=comp(guess[0],guess[1],guess[2],guess[4]);
if(x2+x3+x4+x5>4*x1)
{
num[4]=1;
total+=1;
if(x1==x2)
{
num[0]=1;
total++;
}
if(x1==x3)
{
num[1]=1;
total++;
}
if(x1==x4)
{
num[2]=1;
total++;
}
if(x1==x5)
{
num[3]=1;
total++;
}
}
else
{
if(x1>x2)
{
num[0]=1;
total++;
}
if(x1>x3)
{
num[1]=1;
total++;
}
if(x1>x4)
{
num[2]=1;
total++;
}
if(x1>x5)
{
num[3]=1;
total++;
}
}
}
//0,1,2,3,4已经确定是否出现。
x1=comp(guess[5],guess[6],guess[7],guess[8]);
if(x1==0)
{
x6=comp(guess[5],guess[6],guess[7],guess[9]);
if(x6!=0)
{
num[9]=1;
total++;
}
}
else if(x1==4)
{
num[5]=1;
num[6]=1;
num[7]=1;
num[8]=1;
total+=4;
goto loop;
}
else
{
x2=comp(guess[9],guess[6],guess[7],guess[8]);
x3=comp(guess[5],guess[9],guess[7],guess[8]);
x4=comp(guess[5],guess[6],guess[9],guess[8]);
x5=comp(guess[5],guess[6],guess[7],guess[9]);
if(x2+x3+x4+x5>4*x1)
{
num[9]=1;
total+=1;
if(x1==x2)
{
num[5]=1;
total++;
}
if(x1==x3)
{
num[6]=1;
total++;
}
if(x1==x4)
{
num[7]=1;
total++;
}
if(x1==x5)
{
num[8]=1;
total++;
}
}
else
{
if(x1>x2)
{
num[5]=1;
total++;
}
if(x1>x3)
{
num[6]=1;
total++;
}
if(x1>x4)
{
num[7]=1;
total++;
}
if(x1>x5)
{
num[8]=1;
total++;
}
}
}
loop:
j=0;
for(i=0;i<10;i++)
if(num[i]==1)
{
mydate[j]=i;
j++;
}
i=0;
while(1)
{
x1=s[i]/1000-1;
x2=s[i]/100%10-1;
x3=s[i]/10%10-1;
x4=s[i]%10-1;
if(comp2(mydate[x1],mydate[x2],mydate[x3],mydate[x4])==1)
{
cout<<"I get it,it is:";
cout<<mydate[x1]<<" "<<mydate[x2]<<" "
<<mydate[x3]<<" "<<mydate[x4]<<endl;
return 0;
}
i+=1;
}
}
相关文章:
猜数字游戏(解释)
http://blog.programfan.com/article.asp?id=16825
对置顶贴猜数字的一点解释.
http://blog.programfan.com/article.asp?id=16842
评论