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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3143|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

超音速解數(shù)獨(dú),自行編譯運(yùn)行(C語言版),按題目輸入就行了。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82781 發(fā)表于 2015-6-13 19:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
此程序多解只出一個(gè)解,需要多解請(qǐng)自行修改,或者聯(lián)系本人。。。
你一定聽說過“數(shù)獨(dú)”游戲。
如:
玩家需要根據(jù)9×9盤面上的已知數(shù)字,推理出所有剩余空格的數(shù)字,并滿足每一行、每一列、每一個(gè)同色九宮內(nèi)的數(shù)字均含1-9,不重復(fù)。
數(shù)獨(dú)的答案都是唯一的,所以,多個(gè)解也稱為無解。
本圖的數(shù)字據(jù)說是芬蘭數(shù)學(xué)家花了3個(gè)月的時(shí)間設(shè)計(jì)出來的較難的題目。但對(duì)會(huì)使用計(jì)算機(jī)編程的你來說,恐怕易如反掌了。
本題的要求就是輸入數(shù)獨(dú)題目,程序輸出數(shù)獨(dú)的唯一解。我們保證所有已知數(shù)據(jù)的格式都是合法的,并且題目有唯一的解。
格式要求,輸入9行,每行9個(gè)字符,0代表未知,其它數(shù)字為已知。
輸出9行,每行9個(gè)數(shù)字表示數(shù)獨(dú)的解。
例如:
輸入(即圖中題目):
005300000
800000020
070010500
400005300
010070006
003200080
060500009
004000030
000009700
程序應(yīng)該輸出:
145327698
839654127
672918543
496185372
218473956
753296481
367542819
984761235
521839764
再例如,輸入:
800000000
003600000
070090200
050007000
000045700
000100030
001000068
008500010
090000400
程序應(yīng)該輸出:
812753649
943682175
675491283
154237896
369845721
287169534
521974368
438526917
796318452

代碼如下:
#include<stdio.h>
int ds[9][9],sd[9][9];int temp=0;
void tspd(int a[],int count)
{
         inti,j,k;
         if(temp)
         return;
         if(count<0)
         {        
                  
                            {for(i=0;i<9;i++)
                            {
                            for(j=0;j<9;j++)
                            printf("%d",ds[ i][j]);
                            printf("\n");
                            }printf("\n");}
                            temp=1;
                   return;
         }
         else
         {                 
                   i=a[count]/10;
                   j=a[count]%10;
                   for(k=1;k<=9;k++)
                   {        int x;                  
                            ds[ i][j]=k;
                            for(x=0;x<9;x++)
                            if(ds[ i][j]==sd[ i][x]){x=100;break;}
                            if(x==100)continue;
                            for(x=0;x<9;x++)
                            if(ds[ i][j]==sd[x][j]){x=100;break;}
                            if(x==100)continue;
                            if(j<8&&ds[ i][j]==ds[ i][j+1])continue;
                            if(j<7&&ds[ i][j]==ds[ i][j+2])continue;
                            if(j<6&&ds[ i][j]==ds[ i][j+3])continue;
                            if(j<5&&ds[ i][j]==ds[ i][j+4])continue;
                            if(j<4&&ds[ i][j]==ds[ i][j+5])continue;
                            if(j<3&&ds[ i][j]==ds[ i][j+6])continue;
                            if(j<2&&ds[ i][j]==ds[ i][j+7])continue;
                            if(j<1&&ds[ i][j]==ds[ i][j+8])continue;
                            if(i<8&&ds[ i][j]==ds[i+1][j])continue;
                            if(i<7&&ds[ i][j]==ds[i+2][j])continue;
                            if(i<6&&ds[ i][j]==ds[i+3][j])continue;
                            if(i<5&&ds[ i][j]==ds[i+4][j])continue;
                            if(i<4&&ds[ i][j]==ds[i+5][j])continue;
                            if(i<3&&ds[ i][j]==ds[i+6][j])continue;
                            if(i<2&&ds[ i][j]==ds[i+7][j])continue;
                            if(i<1&&ds[ i][j]==ds[i+8][j])continue;
                            if(i<8&&i>5)
                            {
                                     if(j%3==2&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j-1]||ds[ i][j]==ds[i+1][j-2]))continue;
                                     if(j%3==1&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j-1]||ds[ i][j]==ds[i+1][j+1]))continue;
                                     if(j%3==0&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j+1]||ds[ i][j]==ds[i+1][j+2]))continue;
                            }
                            if(i==6)
                            {
                                     if(j%3==2&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j-1]||ds[ i][j]==ds[i+2][j-2]))continue;
                                     if(j%3==1&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j-1]||ds[ i][j]==ds[i+2][j+1]))continue;
                                     if(j%3==0&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j+1]||ds[ i][j]==ds[i+2][j+2]))continue;
                            }
                            if(i<5&&i>2)
                            {
                                     if(j%3==2&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j-1]||ds[ i][j]==ds[i+1][j-2]))continue;
                                     if(j%3==1&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j-1]||ds[ i][j]==ds[i+1][j+1]))continue;
                                     if(j%3==0&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j+1]||ds[ i][j]==ds[i+1][j+2]))continue;
                            }
                            if(i==3)
                            {
                                     if(j%3==2&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j-1]||ds[ i][j]==ds[i+2][j-2]))continue;
                                     if(j%3==1&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j-1]||ds[ i][j]==ds[i+2][j+1]))continue;
                                     if(j%3==0&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j+1]||ds[ i][j]==ds[i+2][j+2]))continue;
                            }
                            if(i<2&&i>=0)
                            {
                                     if(j%3==2&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j-1]||ds[ i][j]==ds[i+1][j-2]))continue;
                                     if(j%3==1&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j-1]||ds[ i][j]==ds[i+1][j+1]))continue;
                                     if(j%3==0&&(ds[ i][j]==ds[i+1][j]||ds[ i][j]==ds[i+1][j+1]||ds[ i][j]==ds[i+1][j+2]))continue;
                            }
                            if(i==0)
                            {
                                     if(j%3==2&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j-1]||ds[ i][j]==ds[i+2][j-2]))continue;
                                     if(j%3==1&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j-1]||ds[ i][j]==ds[i+2][j+1]))continue;
                                     if(j%3==0&&(ds[ i][j]==ds[i+2][j]||ds[ i][j]==ds[i+2][j+1]||ds[ i][j]==ds[i+2][j+2]))continue;
                            }
                            tspd(a,count-1);
                   }
                   return;
         }
}
int main()
{
         inti,j,a[81],count=0;
         charc;
         for(i=0;i<9;i++)
         for(j=0;j<9;j++)
         {
                   c=getchar();
                   if(c=='\n')
                   c=getchar();
                   ds[ i][j]=(int)(c-'0');
         }
         for(i=0;i<9;i++)
         for(j=0;j<9;j++)
         sd[ i][j]=ds[ i][j];
         printf("\n");
         for(i=0;i<9;i++)
         for(j=0;j<9;j++)
                   if(!ds[ i][j])
                   a[count++]=i*10+j;
         tspd(a,count-1);
         return0;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美色成人 | 播放一级毛片 | 国产精品久久久久久久久久免费看 | 国产日韩欧美一区二区 | 精品国产精品三级精品av网址 | 精品国产免费一区二区三区五区 | 久草在线在线精品观看 | 久久精品亚洲精品国产欧美 | 97久久精品午夜一区二区 | 国产成人区 | 久久国产精品精品国产色婷婷 | 成人在线观看亚洲 | 91网站在线观看视频 | 日韩欧美1区2区 | 久久综合久 | 国产精品国产成人国产三级 | 高清国产午夜精品久久久久久 | 欧美偷偷操| 97久久精品午夜一区二区 | 日韩视频一区二区三区 | 亚洲精品v日韩精品 | 日韩欧美不卡 | 啪啪毛片 | 日韩在线视频免费观看 | 精品九九 | 紧缚调教一区二区三区视频 | 色播久久久| 久久综合av | 亚洲欧美日韩电影 | 欧美日本韩国一区二区 | 欧美成人一区二免费视频软件 | 久久国 | 亚洲成人免费网址 | 久久99精品国产 | 久久九 | 毛片一区二区 | 成年人在线观看 | 日韩字幕一区 | 伊人精品一区二区三区 | 国产中文字幕在线 | 浮生影院免费观看中文版 |