注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

fanhq666的博客

Fan-Fun

 
 
 

日志

 
 

又一个壳  

2008-04-16 17:42:21|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include <iostream>
using namespace std;
struct number{
    char nus[4];
};
number numbers[5041];
number numbersnow[5041];
int numbersp;
int checknumbera(number j,number k)
{
    int i,s=0;
    for (i=0;i<4;i++)
    {
        if (j.nus[i]==k.nus[i])s++;
    }
    return s;
}
int checknumberb(number j,number k)
{
    int i,s=0,b[256];
    for (i=0;i<256;i++)
    {
        b[i]=0;
    }
    for (i=0;i<4;i++)
    {
        b[j.nus[i]]=1;
    }
    for (i=0;i<4;i++)
    {
        if (b[k.nus[i]])s++;
    }
    return s-checknumbera(j,k);
}
int creatnumbers()
{
    int i,j,k,l,m=0,n;
    for (i=0;i<10;i++)
    {
        for (j=0;j<10;j++)
        {
            if (i==j)continue;
            for (k=0;k<10;k++)
            {
                if (i==k || j==k)continue;
                for (l=0;l<10;l++)
                {
                    if (i==l || j==l || k==l)continue;
                    numbers[m].nus[0]=i+'0';
                    numbers[m].nus[1]=j+'0';
                    numbers[m].nus[2]=k+'0';
                    numbers[m].nus[3]=l+'0';
                    numbersnow[m]=numbers[m];
                    m++;
                }
            }
        }
    }
    numbersp=5040;
    return 0;
}
int searchnus(number a,int rule1,int rule2)
{
    int i,j,k;
    number tmp;
    i=-1,j=0;
    for (j=0;j<numbersp;j++)
    {
        if (checknumbera(a,numbersnow[j])==rule1 && checknumberb(a,numbersnow[j])==rule2)
        {
           i++;
           tmp=numbersnow[i];
           numbersnow[i]=numbersnow[j];
           numbersnow[j]=tmp;
        }
        else
        {
           
        }
    }
    numbersp=i+1;
    if (i==-1)return -1;
    return 0;
}
int searchnus(number a,int rule1,int rule2,int &ii)
{
    int i,j,k;
    number tmp;
    i=-1,j=0;
    for (j=0;j<ii;j++)
    {
        if (checknumbera(a,numbersnow[j])==rule1 && checknumberb(a,numbersnow[j])==rule2)
        {
           i++;
           tmp=numbersnow[i];
           numbersnow[i]=numbersnow[j];
           numbersnow[j]=tmp;
        }
        else
        {
           
        }
    }
    ii=i+1;
    if (i==-1)return -1;
    return 0;
}
int calnumber(number a ,int &result)
{
    int i,j,k,l=1,m=0,n=0;
    int re[5][5];
    memset(re,0,25*sizeof(int));
    for (i=0;i<numbersp;i++)
    {
        j=checknumbera(a,numbersnow[i]);
        k=checknumberb(a,numbersnow[i]);
        if (re[j][k])l=0;
        re[j][k]++;
    }
    result=0;
    for (i=0;i<5;i++)
    {
        for (j=0;j<5;j++)
        {
            result+=re[i][j]*re[i][j];
        }
    }
    return l;
}
int trynumber(number a)
{
    int i,j,k;
    int s[5][5];
    for (i=0;i<5;i++)for(j=0;j<5;j++)s[i][j]=0;
    for (i=0;i<numbersp;i++){
        if (s[checknumbera(a,numbernow[i])][checknumberb(a,numbernow)]++)
        {
          
        }
    }
}
int goodnum(number &answer,int how)
{
    int i,j,k,l,min,minid;
    int data[5041];
    int dataid[5041];
    for (i=0;i<numbersp;i++)
    {
        j=calnumber(numbersnow[i],k);
        if (j){
               answer=numbersnow[i];
               return 1;
           }
        data[i]=k;
        dataid[i]=i;
    }
    for (i=0;i<numbersp;i++)
    {
        min=data[i];
        minid=i;
        for (j=i+1;j<numbersp;j++)
        {
            if (data[j]<min)
            {
               min=data[j];
               minid=j;
            }
        }
        l=dataid[i];
        dataid[i]=dataid[minid];
        dataid[minid]=l;
        l=data[i];
        data[i]=data[minid];
        data[minid]=l;
    }
    answer=numbersnow[dataid[how-1]];
    return 0;
}

int findsol1()
{
    int i,j,k,l,m,n,o,p,q;
    for (i=0;i<5040;i++)
    {
    }
}
int findsol()
{
}
int run(int code)
{
    int i,j,k,w,z;
    number tmp;
    char chs[20];
    switch (code)
    {
        case -1:break;
        case 1:
        cin >>chs;
        for (i=0;i<4;i++)
        {
            tmp.nus[i]=chs[i];
        }
        cin >>j>>k;
        searchnus(tmp,j,k);
        if (numbersp<30)
        {
           for (w=0;w<numbersp;w++)
           {
               tmp=numbersnow[w];
               for (z=0;z<4;z++)cout <<tmp.nus[z];
               cout <<' ';
               if ((w+1)%5==0)cout <<endl;
           }
           cout <<endl;
        }
        cout <<"finished"<<endl;
        cout <<numbersp<<endl;
        break;
        case 2:
            findsol();
            system("pause");
        break;
        case 3:
            cin >>j;
            goodnum(tmp,j);
            for (i=0;i<4;i++)
            {
                cout <<tmp.nus[i];
            }   
            cout <<endl;
            system("pause");
        break;
        default:break;
    }
    return 0;
}     
int main()
{
    creatnumbers();
    int i,j,k;
    while (1)
    {
        cin >>i;
        run(i);
        if (i==-1)break;
    }
    return 0;
}

  评论这张
 
阅读(501)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017