正文

用电脑来猜数字II2006-07-25 16:21:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/16821.html

分享到:

#include <iostream.h>

#include <string.h>

 

int date[4];

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)

{

       int i,sum=0;

       for(i=0;i<4;i++)

       {

              if(date[i]==a)

                     sum++;

              if(date[i]==b)

                     sum++;

              if(date[i]==c)

                     sum++;

              if(date[i]==d)

                     sum++;

       }

       cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl<<sum<<endl;

       return sum;

}

 

 

 

int main()

{

       int i,j;

       int guess[10];

       int num[10];

       int total=0;

       int mydate[4];

       int x1,x2,x3,x4;

 

       for(i=0;i<4;i++)

              cin>>date[i];

       for(i=0;i<10;i++)

              num[i]=0;

       for(i=0;i<10;i++)

              guess[i]=i;

 

 

       if(comp(guess[0],guess[1],guess[2],guess[3])==0)

       {

              num[0]=-1;

              num[1]=-1;

              num[2]=-1;

              num[3]=-1;

              if(comp(guess[0],guess[1],guess[2],guess[4])==0)

              {

                     num[4]=-1;

              }

              else

              {

                     num[4]=1;

                     total++;

              }

       }

       else if(comp(guess[0],guess[1],guess[2],guess[3])==4)

       {

              num[0]=1;

              num[1]=1;

              num[2]=1;

              num[3]=1;

              total+=4;

              return 0;

       }

       else

       {

              if( 

                      comp(guess[4],guess[1],guess[2],guess[3])

                     +comp(guess[0],guess[4],guess[2],guess[3])

                     +comp(guess[0],guess[1],guess[4],guess[3])

                     +comp(guess[0],guess[1],guess[2],guess[4])

                     >

                 4*comp(guess[0],guess[1],guess[2],guess[3])

                 )

              {

                     num[4]=1;

                     total+=1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            ==

                            comp(guess[4],guess[1],guess[2],guess[3])

                            )

                     {

                            num[0]=1;

                            total++;

                     }

                     else

                            num[0]=-1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            ==

                            comp(guess[0],guess[4],guess[2],guess[3])

                            )

                     {

                            num[1]=1;

                            total++;

                     }

                     else

                            num[1]=-1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            ==

                            comp(guess[0],guess[1],guess[4],guess[3])

                            )

                     {

                            num[2]=1;

                            total++;

                     }

                     else

                            num[2]=-1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            ==

                            comp(guess[0],guess[1],guess[2],guess[4])

                            )

                     {

                            num[3]=1;

                            total++;

                     }

                     else

                            num[3]=-1;

              }

              else

              {

                     num[4]=-1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            >

                            comp(guess[4],guess[1],guess[2],guess[3])

                            )

                     {

                            num[0]=1;

                            total++;

                     }

                     else

                            num[0]=-1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            >

                            comp(guess[0],guess[4],guess[2],guess[3])

                            )

                     {

                            num[1]=1;

                            total++;

                     }

                     else

                            num[1]=-1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            >

                            comp(guess[0],guess[1],guess[4],guess[3])

                            )

                     {

                            num[2]=1;

                            total++;

                     }

                     else

                            num[2]=-1;

 

 

                     if(

                            comp(guess[0],guess[1],guess[2],guess[3])

                            >

                            comp(guess[0],guess[1],guess[2],guess[4])

                            )

                     {

                            num[3]=1;

                            total++;

                     }

                     else

                            num[3]=-1;

              }

       }

 

 

 

       //cout<<total<<"~~~~"<<endl;

 

 

       if(comp(guess[5],guess[6],guess[7],guess[8])==0)

       {

              num[5]=-1;

              num[6]=-1;

              num[7]=-1;

              num[8]=-1;

              if(comp(guess[5],guess[6],guess[7],guess[8])==0)

              {

                     num[9]=-1;

              }

              else

              {

                     num[9]=1;

                     total++;

              }

       }

       else if(comp(guess[5],guess[6],guess[7],guess[8])==4)

       {

              num[5]=1;

              num[6]=1;

              num[7]=1;

              num[8]=1;

              total+=4;

              return 0;

       }

       else

       {

              if( 

                      comp(guess[9],guess[6],guess[7],guess[8])

                     +comp(guess[5],guess[9],guess[7],guess[8])

                     +comp(guess[5],guess[6],guess[9],guess[8])

                     +comp(guess[5],guess[6],guess[7],guess[9])

                     >

                 4*comp(guess[5],guess[6],guess[7],guess[8])

                 )

              {

                     num[9]=1;

                     total+=1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            ==

                            comp(guess[9],guess[6],guess[7],guess[8])

                            )

                     {

                            num[5]=1;

                            total++;

                     }

                     else

                            num[5]=-1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            ==

                            comp(guess[5],guess[9],guess[7],guess[8])

                            )

                     {

                            num[6]=1;

                            total++;

                     }

                     else

                            num[6]=-1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            ==

                            comp(guess[5],guess[6],guess[9],guess[8])

                            )

                     {

                            num[7]=1;

                            total++;

                     }

                     else

                            num[7]=-1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            ==

                            comp(guess[5],guess[6],guess[7],guess[9])

                            )

                     {

                            num[8]=1;

                            total++;

                     }

                     else

                            num[8]=-1;

              }

              else

              {

                     num[9]=-1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            >

                            comp(guess[9],guess[6],guess[7],guess[8])

                            )

                     {

                            num[5]=1;

                            total++;

                     }

                     else

                            num[5]=-1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            >

                            comp(guess[5],guess[9],guess[7],guess[8])

                            )

                     {

                            num[6]=1;

                            total++;

                     }

                     else

                            num[6]=-1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            >

                            comp(guess[5],guess[6],guess[9],guess[8])

                            )

                     {

                            num[7]=1;

                            total++;

                     }

                     else

                            num[7]=-1;

 

 

                     if(

                            comp(guess[5],guess[6],guess[7],guess[8])

                            >

                            comp(guess[5],guess[6],guess[7],guess[9])

                            )

                     {

                            num[8]=1;

                            total++;

                     }

                     else

                            num[8]=-1;

              }

       }

 

       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;

                     cout<<mydate[x1]<<" "<<mydate[x2]<<" "

                            <<mydate[x3]<<" "<<mydate[x4]<<endl;

                     if(mydate[x1]==date[0]

                            && mydate[x2]==date[1]

                            && mydate[x3]==date[2]

                            && mydate[x4]==date[3])

                            return 0;

                     i+=1;

              }

}

 

阅读(3148) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册