久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

        專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        回溯算法1

        作者:佚名   來源:本站原創   點擊數:  更新時間:2013年12月23日   【字體:

        int TuiLi::OK()//根據約束條件剪枝的剪枝函數
        {
        int i,j;
        if(
        (Fz[0].ys==Fz[1].ys&&Fz[0].ys!=0)||(Fz[0].ys==Fz[2].ys&&Fz[0].ys!=0)
        ||(Fz[0].ys==Fz[3].ys&&Fz[0].ys!=0)||(Fz[0].ys==Fz[4].ys&&Fz[0].ys!=0)
        ||(Fz[1].ys==Fz[2].ys&&Fz[1].ys!=0)
        ||(Fz[1].ys==Fz[3].ys&&Fz[1].ys!=0)||(Fz[1].ys==Fz[4].ys&&Fz[1].ys!=0)
        ||(Fz[2].ys==Fz[3].ys&&Fz[2].ys!=0)||(Fz[2].ys==Fz[4].ys&&Fz[2].ys!=0)
        ||(Fz[3].ys==Fz[4].ys&&Fz[3].ys!=0)||


        (Fz[0].gj==Fz[1].gj&&Fz[0].gj!=0)||(Fz[0].gj==Fz[2].gj&&Fz[0].gj!=0)
        ||(Fz[0].gj==Fz[3].gj&&Fz[0].gj!=0)||(Fz[0].gj==Fz[4].gj&&Fz[0].gj!=0)
        ||(Fz[1].gj==Fz[2].gj&&Fz[1].gj!=0)
        ||(Fz[1].gj==Fz[3].gj&&Fz[1].gj!=0)||(Fz[1].gj==Fz[4].gj&&Fz[1].gj!=0)
        ||(Fz[2].gj==Fz[3].gj&&Fz[2].gj!=0)||(Fz[2].gj==Fz[4].gj&&Fz[2].gj!=0)
        ||(Fz[3].gj==Fz[4].gj&&Fz[3].gj!=0)||

        (Fz[0].cw==Fz[1].cw&&Fz[0].cw!=0)||(Fz[0].cw==Fz[2].cw&&Fz[0].cw!=0)
        ||(Fz[0].cw==Fz[3].cw&&Fz[0].cw!=0)||(Fz[0].cw==Fz[4].cw&&Fz[0].cw!=0)
        ||(Fz[1].cw==Fz[2].cw&&Fz[1].cw!=0)
        ||(Fz[1].cw==Fz[3].cw&&Fz[1].cw!=0)||(Fz[1].cw==Fz[4].cw&&Fz[1].cw!=0)
        ||(Fz[2].cw==Fz[3].cw&&Fz[2].cw!=0)||(Fz[2].cw==Fz[4].cw&&Fz[2].cw!=0)
        ||(Fz[3].cw==Fz[4].cw&&Fz[3].cw!=0)||

        (Fz[0].yl==Fz[1].yl&&Fz[0].yl!=0)||(Fz[0].yl==Fz[2].yl&&Fz[0].yl!=0)
        ||(Fz[0].yl==Fz[3].yl&&Fz[0].yl!=0)||(Fz[0].yl==Fz[4].yl&&Fz[0].yl!=0)
        ||(Fz[1].yl==Fz[2].yl&&Fz[1].yl!=0)
        ||(Fz[1].yl==Fz[3].yl&&Fz[1].yl!=0)||(Fz[1].yl==Fz[4].yl&&Fz[1].yl!=0)
        ||(Fz[2].yl==Fz[3].yl&&Fz[2].yl!=0)||(Fz[2].yl==Fz[4].yl&&Fz[2].yl!=0)
        ||(Fz[3].yl==Fz[4].yl&&Fz[3].yl!=0)||

        (Fz[0].yp==Fz[1].yp&&Fz[0].yp!=0)||(Fz[0].yp==Fz[2].yp&&Fz[0].yp!=0)
        ||(Fz[0].yp==Fz[3].yp&&Fz[0].yp!=0)||(Fz[0].yp==Fz[4].yp&&Fz[0].yp!=0)
        ||(Fz[1].yp==Fz[2].yp&&Fz[1].yp!=0)
        ||(Fz[1].yp==Fz[3].yp&&Fz[1].yp!=0)||(Fz[1].yp==Fz[4].yp&&Fz[1].yp!=0)
        ||(Fz[2].yp==Fz[3].yp&&Fz[2].yp!=0)||(Fz[2].yp==Fz[4].yp&&Fz[2].yp!=0)
        ||(Fz[3].yp==Fz[4].yp&&Fz[3].yp!=0)

        ) return 1;


        for(i=0;i<5;i++)
        if(Fz[i].gj==2&&Fz[i].ys!=1&&Fz[i].ys>0) return 1;
        //英國人住紅色房子
        for(i=0;i<5;i++)
        if(Fz[i].gj==5&&Fz[i].cw!=1&&Fz[i].cw>0) return 1;
        //瑞典人養狗
        for(i=0;i<5;i++)
        if(Fz[i].gj==4&&Fz[i].yl!=1&&Fz[i].yl>0) return 1;
        //丹麥人喝茶

        for(i=0;i<5;i++)
        {
        if(Fz[i].ys==5)
        {
        for(j=0;j<5;j++)
        {
        if(Fz[j].ys==3) if(i }
        }
        }
        //綠色房子在白色房子左面

        for(i=0;i<5;i++)
        if(Fz[i].ys==3&&Fz[i].yl!=3&&Fz[i].yl>0) return 1;
        //綠色房子主人喝咖啡

        for(i=0;i<5;i++)
        if(Fz[i].yp==4&&Fz[i].cw!=4&&Fz[i].cw>0) return 1;
        //抽Pall Mall 香煙的人養鳥


        for(i=0;i<5;i++)
        if(Fz[i].ys==2&&Fz[i].yp!=3&&Fz[i].yp>0) return 1;
        //黃色房子主人抽、Dunhill 香煙

        if(Fz[2].yl!=2&&Fz[2].yl!=0) return 1;
        //住在中間房子的人喝牛奶

        if(Fz[0].gj!=1&&Fz[0].gj!=0) return 1;
        //挪威人住第一間房

        for(i=0;i<5;i++)
        {
        if(Fz[i].yp==1){
        if(i==0)if(Fz[1].cw!=2&&Fz[1].cw!=0) return 1;
        if(i==4)if(Fz[3].cw!=2&&Fz[3].cw!=0) return 1;
        if((Fz[i].yp==1)&&((Fz[i-1].cw!=2&&Fz[i-1].cw!=0)&&(Fz[i+1].cw!=2&&Fz[i+1].cw!=0))) return 1;
        }
        }
        //抽Blends香煙的人住在養貓的人隔壁

        for(i=0;i<5;i++)
        {
        if(Fz[i].yp==3){
        if(i==0)if(Fz[1].cw!=5&&Fz[1].cw!=0) return 1;
        if(i==4)if(Fz[3].cw!=5&&Fz[3].cw!=0) return 1;
        if((Fz[i].yp==3)&&((Fz[i-1].cw!=5&&Fz[i-1].cw!=0)&&(Fz[i+1].cw!=5&&Fz[i+1].cw!=0))) return 1;
        }
        }
        //抽Dunhill 香煙的人住養馬的人隔壁

        for(i=0;i<5;i++)
        if(Fz[i].yp==2&&Fz[i].yl!=4&&Fz[i].yl>0) return 1;
        //抽Blue Master的人喝啤酒

        for(i=0;i<5;i++)
        if(Fz[i].yp==5&&Fz[i].gj!=3&&Fz[i].gj>0) return 1;
        //德國人抽Prince香煙


        for(i=0;i<5;i++)
        {
        if(Fz[i].gj==1){
        if(i==0)if(Fz[1].ys!=4&&Fz[1].cw!=0) return 1;
        if(i==4)if(Fz[3].ys!=4&&Fz[3].cw!=0) return 1;
        if((Fz[i].gj==1)&&((Fz[i-1].ys!=4&&Fz[i-1].ys!=0)&&(Fz[i+1].ys!=4&&Fz[i+1].ys!=0))) return 1;
        }
        }
        //挪威人住藍色房子隔壁

        for(i=0;i<5;i++)
        {
        if(Fz[i].yp==1){
        if(i==0)if(Fz[1].yl!=5&&Fz[1].cw!=0) return 1;
        if(i==4)if(Fz[3].yl!=5&&Fz[3].cw!=0) return 1;
        if((Fz[i].yp==1)&&((Fz[i-1].yl!=5&&Fz[i-1].yl!=0)&&(Fz[i+1].yl!=5&&Fz[i+1].yl!=0))) return 1;
        }
        }
        //抽Blends香煙的人有一個喝水的鄰居
        return 0;
        }

        int TuiLi::go()//推理類執行入口點
        {
        int i,c=0;
        for(i=0;i<25;i++)sz[i]=0;
        //回溯根節點初始值,調整這個值能調整回溯進度
        sz[0]=1;
        gx();
        i=0;
        while(1)
        {
        if(sz[i]<=5)
        {
        //回溯點取值在正常范圍內
        if(OK())
        {
        //如果和剪枝條件沖突,嘗試下一個可用值
        sz[i]++;
        gx();
        continue;
        }
        if(i>=24)
        {
        //已經到了最后一個節點
        print();
        //然后嘗試找到其它的解
        sz[24]++;
        gx();
        c++;
        continue;
        }
        //回溯點值沒有產生沖突擴展他嘗試開始下一個節點
        i++;
        sz[i]=1;
        gx();

        }else
        {
        //超過回溯點取值范圍
        //此回溯點已死復位
        sz[i]=0;
        gx();
        //退回前一回溯點
        i--;
        if(i<0)
        {
        printf("已經找出推理題所有解共有:%d個解!\n",c);
        return 1;
        }
        //嘗試對上一回溯點進行擴展
        sz[i]++;
        gx();
        continue;
        }
        }

        return 0;

        }
        void TuiLi::sd_in()
        {
        int i,j,z=0;
        for(i=0;i<81;i++)sudu_ji[i]=0;
        for(i=0;i<81;i++)sudu[i]=0;

        for(i=0;i<9;i++)
        for(j=0;j<9;j++)
        {
        sudu[z]=SD[i][j];
        if(SD[i][j]!=0)
        {
        sudu_ji[z]=1;
        }
        z++;
        }
        }

        關閉窗口

        相關文章

        主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 色吊丝在线| 国产欧美日韩在线观看 | 一区在线视频 | 夜夜夜操 | 亚洲精品一区二区冲田杏梨 | 欧美精品久久久久 | 欧美日韩成人在线 | 精品国产欧美 | www.国产视频 | 免费观看www | 美女久久久久久久久 | 久久精品国产99国产精品 | 亚洲一二三区免费 | 亚洲综合在线视频 | 国产羞羞视频在线观看 | 久久婷婷国产麻豆91 | 国产精品久久久久不卡 | 成人精品一区二区 | 成人av电影网 | 亚洲人成在线观看 | 中文字幕在线一区二区三区 | 亚洲一区二区在线 | 在线播放第一页 | 国产精品免费视频一区 | 日韩在线精品视频 | 99视频网站 | 久久国产精品亚洲 | 国产人免费人成免费视频 | 99久久精品免费看国产四区 | 午夜小电影 | 狠狠操狠狠操 | 色爱综合| 成人精品视频在线观看 | 成人在线视频免费看 | 国产精品久久久久久久久久免费看 | 国产欧美日韩综合精品一区二区 | 一级片在线观看视频 | 搞黄网站在线观看 | 中文字幕日韩一区 | 亚洲国产一区二区视频 |