社区讨论
蒟蒻求调(#4,#5 TLE)
P1784数独参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lpdky6qn
- 此快照首次捕获于
- 2023/11/25 12:57 2 年前
- 此快照最后确认于
- 2023/11/25 15:07 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
int sudoku[10][10];
void print(){
for(int i=1;i<=9;++i){
for(int j=1;j<=9;++j){
cout<<sudoku[i][j]<<" ";
}
cout<<endl;
}
}
bool check(int x,int y,int k){
for(int i=1;i<=9;++i){
if(sudoku[i][y]==k) return 0;
}
for(int i=1;i<=9;++i){
if(sudoku[x][i]==k) return 0;
}
for(int i = (x - 1) / 3 * 3 + 1; i <= (x - 1) / 3 * 3 + 3 ; ++i){
for(int j = (y - 1) / 3 * 3 + 1; j <= (y - 1) / 3 * 3 + 3 ; ++j){
if(sudoku[i][j] == k) return 0;
}
}
return 1;
}
void dfs(int x,int y){
if(x==10) {
print();
return;
}
if(y==10) {
dfs(x+1,1);
return;
}
if(sudoku[x][y]) dfs(x,y+1);
for(int i=1;i<=9;++i){
if(sudoku[x][y]==0){
if(check(x,y,i)){
sudoku[x][y]=i;
dfs(x,y+1);
sudoku[x][y]=0;
}
}
}
}
int main(){
for(int i=1;i<=9;++i){
for(int j=1;j<=9;++j){
cin>>sudoku[i][j];
}
}
dfs(1,1);
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...