日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python解数独--世界最难数独2.3秒完成_【数独】世界最难数独90+毫秒解决。一个不错的算法...

發布時間:2023/12/14 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python解数独--世界最难数独2.3秒完成_【数独】世界最难数独90+毫秒解决。一个不错的算法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

import java.util.Calendar;

public class Matrix {

private int matrix[][];

private long timeAfter=0;

private long timeBefore =0;

public Matrix(int m[][]) {

matrix = new int[9][9];

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

for(int j= 0; j<9; j++)

matrix[i][j]=m[i][j];

this.timeBefore = Calendar.getInstance().getTimeInMillis();

}

public void backTrack(int i, int j)

{

if( i==8 && j>=9 )

{

this.timeAfter = Calendar.getInstance().getTimeInMillis();

//成功輸出矩陣

this.showMatrix();

return;

}

if(j == 9) {j = 0; i++;}

if(matrix[i][j] == 0)

{

//數字為零

for(int k=1; k<=9; k++)

{

if(bound(i,j,k))

{

matrix[i][j] = k ;

//符合條件,查找下一個方格

backTrack(i,j+1);

matrix[i][j] = 0 ;

}

}

}else

{

//數字不為零,直接查找下一個

backTrack(i, j+1);

}

}

/**

* 判斷要填入的數字和同行同列以及同一九宮格內數字是否重復

*/

private boolean bound(int i, int j, int k) {

int m = i/3;

int n = j/3;

for(int p = 0; p<9; p++)

{

if(k == matrix[i][p])

{

return false;

}

if(k == matrix[p][j])

{

return false;

}

if(k == matrix[3*m+p/3][3*n+p%3])

{

return false;

}

}

return true;

}

/**

* 打印解題時間

* @return

*/

public long printTime()

{

return this.timeAfter-this.timeBefore;

}

/**

* 打印矩陣

*/

public void showMatrix()

{

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

{

for(int j=0; j<9; j++)

{

System.out.print(matrix[i][j]+" ");

}

System.out.println ();

}

System.out.println("解題時間: "+printTime()+"毫秒");

System.out.println ();

}

public static void main(String[] args) {

int matrix[][] = {

{3,0,6,0,5,7,0,0,0},

{7,9,0,0,2,4,0,0,0},

{0,5,0,6,0,0,9,7,4},

{8,0,1,0,0,9,0,0,0},

{0,2,0,3,0,8,0,0,7},

{4,0,0,0,6,0,5,0,0},

{0,0,4,0,3,6,0,5,0},

{2,0,3,7,0,5,0,0,1},

{0,0,7,4,1,0,6,0,0}};

int ma1[][]={

{0,3,0,0,0,5,0,6,0},

{0,1,0,0,0,3,0,8,0},

{0,4,0,0,0,0,0,0,7},

{0,0,7,0,2,4,0,0,0},

{5,0,0,0,9,0,0,0,0},

{0,8,0,3,0,0,5,0,0},

{0,0,0,8,0,0,0,0,0},

{0,0,9,0,0,0,0,7,3},

{0,5,0,9,0,0,0,0,2}};

int ma2[][]={

{0,0,0,0,0,4,0,0,0},//8

{0,0,0,2,0,3,0,8,0},

{8,3,0,9,0,0,0,5,0},

{0,5,3,0,9,0,7,0,0},

{0,0,0,6,3,0,0,4,5},//7

{0,7,0,5,0,0,0,0,0},

{0,0,6,8,0,0,0,0,0},

{3,0,0,0,2,9,0,0,0},

{2,0,9,0,0,0,0,0,1}};//3

// 號稱世界上最難數獨

int[][] sudoku = {

{ 8, 0, 0, 0, 0, 0, 0, 0, 0 },

{ 0, 0, 3, 6, 0, 0, 0, 0, 0 },

{ 0, 7, 0, 0, 9, 0, 2, 0, 0 },

{ 0, 5, 0, 0, 0, 7, 0, 0, 0 },

{ 0, 0, 0, 0, 4, 5, 7, 0, 0 },

{ 0, 0, 0, 1, 0, 0, 0, 3, 0 },

{ 0, 0, 1, 0, 0, 0, 0, 6, 8 },

{ 0, 0, 8, 5, 0, 0, 0, 1, 0 },

{ 0, 9, 0, 0, 0, 0, 4, 0, 0 }};

Matrix m = new Matrix(sudoku);

m.backTrack(0, 0);

}

}

總結

以上是生活随笔為你收集整理的python解数独--世界最难数独2.3秒完成_【数独】世界最难数独90+毫秒解决。一个不错的算法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。