數獨小規律

2021-06-09 23:41:23 字數 4521 閱讀 6604

文章最後有總結。和展望。

void perm(int list, int s, int e) ;                    //對list[s]——list[e]進行全排列

void move1(int list,int a,int b)

void move2(int list,int a,int b)

void perm(int list, int s, int e)                     

for (int i=s; i <= e; i++)  } 

void shuffle(int arr)

}int initial(int i, int j, int start)

return(1);

}if (j == 8)                                 

else

j++;

initial(i, j, 8);           

return 1;

}if (k == 0)                        

else

j--;

line[i][data[i][j]-1] = 0;

column[j][data[i][j]-1] = 0;

block[i/3*3+j/3][data[i][j]-1] = 0;

}while (data[i][j] == b[0]);

initial(i, j, data1[i][j] -1);

return 1;                   

}}//for

}int main()

for(int i=0;i<=362878;i++)

}int num=0;

for(int i=0;i<=362879;i++)

if(data_vessel[i][0][0]!=0) num++;

cout

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

system("pause");

}這篇文章得到的結論:用這篇文章的演算法(每個**本質上一樣,為了不同的目的做了寫修改)能生成一些有規律的終盤:

這裡指的一些到底有多少:  分兩種情況:形式不一的終盤可以生成 9!*12096*216=948109639680  約9481億個

本質不一的終盤可以生成          12096*216=2612736             約261萬個

演算法中每天橫帶產生乙個種子。每選乙個種子都有9!可能,當然這麼多可能肯定會產生重複的終盤,上面的計算是剔除重複的情況。

這種演算法生成的終盤量是很大的,但都有共同的規律,如果解題人解出題後發現了這個規律,能否推出三個種子我打文字時第一次開始考慮這個問題。第乙個種子是

不用推導,第二個種子和第三個種子如何推導,如果推導不了,能否寫個演算法全部列印到檔案?

還有個問題我之前就思考過,如果每填一行給個種子,或每兩行給個種子,終盤的生成數又如何算,顯然能生成的終盤更多。

構造數獨和解數獨

數獨,俗稱九宮格,由乙個9 9的網格組成,整個網格又分成9個3 3的小正方形網格,每個格仔有乙個數字 1 9 數獨滿足如下要求 1 每個數字在每一行只出現一次 2 每個數字在每一列只出現一次 3 每個數字在每個3 3的小區域中也只出現一次 如下圖所示,為我們比較常見的數獨形式,為乙個缺了數字的數獨,...

數獨問題 解數獨

數獨是乙個非常有名的遊戲。整個是乙個9x9的大宮格,其中又被劃分成9個3x3的小宮格。要求在每個小格中放入1 9中的某個數字。要求是 每行 每列 每個小宮格中數字不能重複。現要求用計算機求解數獨。輸入描述 輸入9行,每行為空格隔開的9個數字,為0的地方就是需要填充的數字。輸出描述 輸出九行,每行九個...

python 數獨 Python中的數獨檢查器

我正在嘗試用python建立乙個數獨檢查器 ill formed 5,3,4,6,7,8,9,1,2 6,7,2,1,9,5,3,4,8 1,9,8,3,4,2,5,6,7 8,5,9,7,6,1,4,2,3 4,2,6,8,5,3,7,9 7,1,3,9,2,4,8,5,6 9,6,1,5,3,7...