社区讨论
求助,第四个点tle
P1784数独参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo89d9av
- 此快照首次捕获于
- 2023/10/27 14:54 2 年前
- 此快照最后确认于
- 2023/10/27 14:54 2 年前
C
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[10][10];
bool h[10][10],w[10][10],g[10][10];
void dfs(int p)
{
int x = p / 9;
int y = p % 9;
int k = x / 3 * 3 + y / 3;
if(p > 80)
{
for(int i = 0; i <= 8; i ++)
{
for(int j = 0; j <= 8; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
cout << endl;
return;
}
if(a[x][y] != 0)
{
dfs(p + 1);
return;
}
for(int i = 1; i <= 9; i++)
{
if(h[x][i] || w[y][i] || g[k][i])continue;
a[x][y] = i;
h[x][i] = w[y][i] = g[k][i] = 1;
dfs(p + 1);
a[x][y] = 0;
h[x][i] = w[y][i] = g[k][i] = 0;
}
}
int main()
{
for(int i = 0; i <= 8; i++)
{
for(int j = 0; j <= 8; j++)
{
cin >> a[i][j];
h[i][a[i][j]] = 1;
w[j][a[i][j]] = 1;
g[i / 3 * 3 + j / 3][a[i][j]] = 1;
}
}
dfs(0);
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...