社区讨论

求助,第四个点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 条回复,欢迎继续交流。

正在加载回复...