題目鏈結
數獨是一種傳統益智遊戲,你需要把乙個 9×9 的數獨補充完整,使得圖中每行、每列、每個 3×3 的九宮格內數字 1∼9 均恰好出現一次。
請編寫乙個程式填寫數獨。
輸入格式
輸入共 9 行,每行包含乙個長度為 9 的字串,用來表示數獨矩陣。
其中的每個字元都是 1∼9 或 .(表示尚未填充)。
輸出格式
輸出補全後的數獨矩陣。
資料保證有唯一解。
輸入樣例:
.2738..1
..1..
.6735..
....
.293.5692.8.
....
....
..6.1745
.364...
....
9518...7
..8..6534
.
輸出樣例:
527389416
819426735
436751829
375692184
194538267
268174593
643217958
951843672
782965341
答案:
#include
#include
#define ll long long
#define ull unsigned long long
#define inf 0x3f3f3f3f3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define pii pair
#define pll pair
#define pi acos(-1)
#define pb push_back
#define eps 1e-6
const
int mod =
1e9+7;
const
int n =
1e5+10;
const
int m =11;
using
namespace std;
char s[m]
[m];
int n=10;
bool
dfs(
int x,
int y)
}rep
(i,0
,n-2)}
int dx=x/3*
3;/// 找到當前九宮格的左上角位置
int dy=y/3*
3;rep(i,dx,dx+2)
}}rep(i,
1,n-1)
} s[x]
[y]=
'.';
/// 如果搜完了所有可填數字,或沒有可填數字,那麼將該格改為未填狀態
return0;
/// 並返回 false
}void
solve()
dfs(0,
0);rep
(i,0
,n-2
) cout
acwing 1613 數獨簡單版 DFS爆搜
題目連線 數獨問題,需要在橫 縱 每9個方格之中填1到9數字。我們可以構建一棵dfs樹,對於每乙個節點要求滿足以上三總條件才可以更新這乙個點,如果這個點可以走下去那麼就深度搜尋下去,並且更新當點的狀態以此復原現場。y總 include using namespace std const int n ...
數獨簡單版
題目鏈結 數獨是一種傳統益智遊戲,你需要把乙個 9 9 的數獨補充完整,使得圖中每行 每列 每個 3 3 的九宮格內數字 1 9 均恰好出現一次。請編寫乙個程式填寫數獨。輸入共 9 行,每行包含乙個長度為 9 的字串,用來表示數獨矩陣 其中的每個字元都是 1 9 或 表示尚未填充 輸出補全後的數獨矩...
數獨簡單版(搜尋 剪枝)
數獨是一種傳統益智遊戲,你需要把乙個 9 9 9 9 的數獨補充完整,使得圖中每行 每列 每個 3 3 3 3 的九宮格內數字 1 9 1 9 均恰好出現一次。請編寫乙個程式填寫數獨。輸入格式 輸入共 9 9 行,每行包含乙個長度為 9 9 的字串,用來表示數獨矩陣。其中的每個字元都是 1 9 1 ...