題解 數獨 養生題

2022-02-23 20:38:11 字數 773 閱讀 8197

優雅的暴力——搜尋演算法小結

不過我還用了隨機化搜尋,這種搜尋思想可以防止被毒瘤出題人卡掉。有興趣的可以看一下我的一篇總結裡面寫了搜尋的一些技巧。

對於實現,我的思路是...不好說,但是這樣寫搜尋又快又穩還短。

以上是洛谷裝逼的話

//@winlere

#include #include using namespace std;

const int maxn=11;

int line[maxn][maxn],row[maxn][maxn];

int blok[maxn][maxn],loc[maxn][maxn];

int mp[maxn][maxn],seed[maxn];

void dfs(const int&x,const int&y)

if(y>9) return dfs(x+1,1);

if(mp[x][y]) return dfs(x,y+1);

for(register int t0=1,t=seed[t0];t0<=9;++t0,t=seed[t0])

if(!line[x][t]&&!row[y][t]&&!blok[loc[x][y]][t])

line[x][t]=mp[x][y]=row[y][t]=blok[loc[x][y]][t]=t,

dfs(x,y+1),

line[x][t]=mp[x][y]=row[y][t]=blok[loc[x][y]][t]=0;

}int main()

數獨問題 解數獨

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

每日刷題 解數獨

編寫乙個程式,通過已填充的空格來解決數獨問題。乙個數獨的解法需遵循如下規則 數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。空白格用 表示。示例 乙個數獨。答案被標成紅色。note 給定的數獨序列只包含數字 1 ...

構造解數獨

public class sudoku 尋找橫座標下一位置 int findx int x,int y 尋找縱座標下一位置 int findy int x,int y 輸出完成的數獨矩陣 void sdprint system.out.print n system.out.print n 判斷當前位...