e没输出 求调QWQ
  • 板块P1784 数独
  • 楼主Yaoshui_lv
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/8 20:22
  • 上次更新2024/8/8 21:17:01
查看原帖
e没输出 求调QWQ
1277657
Yaoshui_lv楼主2024/8/8 20:22

如果帮我调好我一定召集我认识的人关注你QAQ

#include <bits/stdc++.h>
#define int long long
#define n 9
using namespace std;
int a[11][11];

void print() {
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	exit(0);
}

bool judge() {
	for (int i = 1; i <= n; i++) {
		int t[10] = { 0 };
		for (int j = 1; j <= n; j++) t[a[i][j]]++;
		for (int j = 1; j <= n; j++)
			if (t[j] > 1) return false;
	}
	for (int i = 1; i <= n; i++) {
		int t[10] = { 0 };
		for (int j = 1; j <= n; j++) t[a[j][i]]++;
		for (int j = 1; j <= n; j++)
			if (t[j] > 1) return false;
	}
	for (int x = 1; x <= n; x += 3) {
		for (int y = 1; y <= n; y += 3) {
			int t[10] = { 0 };
			for (int i = 0; i < 3; i++) {
				for (int j = 0; j < 3; j++) {
					t[a[x+i][x+j]]++;
				}
			}
			for (int i = 1; i <= n; i++)
				if (t[i] > 1) return false;
		}
	}
	return true;
}

void dfs(long long x, long long y) {
	if (a[x][y]) {
		if (x == n && y == n) print();
		else if (y == n) dfs(x+1, 1);
		else dfs(x, y+1);
	} else {
		for (int i = 1; i <= n; i++) {
			a[x][y] = i;
			if (judge()) {
				if (x == 9 && y == 9) print();
				else if (y == 9) dfs(x+1, 1);
				else dfs(x, y+1);
			} 
			else a[x][y] = 0;
		}
	}
}

signed main() {
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j+
			scanf("%d", &a[i][j]);
	dfs(1, 1);
	return 0;
}
2024/8/8 20:22
加载中...