C 演算法 解數獨 條件遞迴

2021-09-24 04:28:56 字數 777 閱讀 6812

leetcode相關c++演算法解答:

編寫乙個程式,通過已填充的空格來解決數獨問題。

乙個數獨的解法需遵循如下規則:

數字 1-9 在每一行只能出現一次。

數字 1-9 在每一列只能出現一次。

數字 1-9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。

首先提取當前有的元素,放在三個vector>,然後在使用普通遞迴的方法找出答案,solve(board, row, col, sub, 0, 0, flag); //必須立乙個flag,因為當遞迴到最後,還需要返回到上一次,而之後的**還原了board,所以需要判斷是否需要還原!!!

class solution 

private:

void rowcolsub(vector>& board, vector>& row, vector>& col, vector>& sub)

}void solve( vector>& temp, vector>& row, vector>& col, vector>& sub, int i, int j, int& flag)

if(i == 9) //已經解數獨了

while(temp[i][j] != '.') //確保每次遞迴回來的i和j是新增值的位置

if(i == 9) //已經解數獨了

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

}//沒找到回到上一次添值的位置重新開始,所以要使用遞迴

return ;

}};

解數獨演算法 C 實現

時間比較倉促,未優化。大牛看客,勿笑話。當然有好的建議,我洗耳恭聽。若有時間再用mfc寫乙個介面。好了,廢話不多說,如下 include using namespace std 可選數字 int candidate 標記這個空格是否為原始資料 int g a 9 9 列印函式 void print ...

解數獨演算法 C 實現

時間比較倉促,未優化。大牛看客,勿 笑話。當然有好的建議,我洗耳恭聽。若有時間再用mfc寫乙個介面。好了,廢話不多說,如下 include using namespace std 可選數字 int candidate 標記這個空格是否為原始資料 int g a 9 9 列印函式 void print...

java求解數獨(遞迴)

先來一些測試用例 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...