優雅的暴力——搜尋演算法小結
不過我還用了隨機化搜尋,這種搜尋思想可以防止被毒瘤出題人卡掉。有興趣的可以看一下我的一篇總結裡面寫了搜尋的一些技巧。
對於實現,我的思路是...不好說,但是這樣寫搜尋又快又穩還短。
以上是洛谷裝逼的話
//@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 判斷當前位...