社区讨论
RE求调
B4279[蓝桥杯青少年组国赛 2023] 数独填数参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mljkw53o
- 此快照首次捕获于
- 2026/02/12 22:53 7 天前
- 此快照最后确认于
- 2026/02/15 17:50 4 天前
CPP
#include <bits/stdc++.h>
using namespace std;
char a[11][10];
bool flag;
bool check(int i, int j, int k){
for(int x=1;x<=9;x++){
if(a[i][x]==(k+48)&&a[x][j]==(k+48)){
flag = 0;
return 0;
}
}
if(i<=3&&j<=3){
for(int x=1;x<=3;x++)
for(int y=1;y<=3;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i<=3&&j>=4&&j<=6){
for(int x=1;x<=3;x++)
for(int y=4;y<=6;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i<=3&&j>=7&&j<=9){
for(int x=1;x<=3;x++)
for(int y=7;y<=9;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i>=4&&i<=6&&j<=3){
for(int x=4;x<=6;x++)
for(int y=1;y<=3;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i>=4&&i<=6&&j>=4&&j<=6){
for(int x=4;x<=6;x++)
for(int y=4;y<=6;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i>=4&&i<=6&&j>=7&&j<=9){
for(int x=4;x<=6;x++)
for(int y=7;y<=9;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i>=7&&i<=9&&j<=3){
for(int x=7;x<=9;x++)
for(int y=1;y<=3;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i>=7&&i<=9&&j>=4&&j<=6){
for(int x=7;x<=9;x++)
for(int y=4;y<=6;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else if(i>=7&&i<=9&&j>=7&&j<=9){
for(int x=7;x<=9;x++)
for(int y=7;y<=9;y++)
if(a[x][y]==(k+48)){
flag = 0;
return 0;
}
}
else{
flag = 1;
return 1;
}
}
void DFS(int i, int j){
if(i==10&&j==1){
for(int k=1;k<=9;k++){
for(int l=1;l<=9;l++)
cout << a[k][l];
cout << endl;
}
return;
}
if(a[i][j]!='0')
if(j==9)
DFS(i+1, 1);
else
DFS(i, j+1);
else{
for(int k=1;k<=9;k++){
if(check(i, j, k)&&j==9)
DFS(i+1, 1);
else if(flag)
DFS(i, j+1);
}
}
}
int main(){
char b;
for(int i=1;i<=9;i++)
for(int j=1;i<=9;j++){
cin >> b;
if(b!='.')
a[i][j] = b;
else
a[i][j] = '0';
}
DFS(1, 1);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...