全部时间超限,求条,救救孩子
  • 板块P1784 数独
  • 楼主blxrrm
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/7/31 14:38
  • 上次更新2025/7/31 14:52:33
查看原帖
全部时间超限,求条,救救孩子
1809354
blxrrm楼主2025/7/31 14:38
#include <bits/stdc++.h>
using namespace std;

int g[9][9];

bool v(int i, int j, int k) {
    for (int c = 0; c < 9; c++) if (g[i][c] == k) return false;
    for (int r = 0; r < 9; r++) if (g[r][j] == k) return false;
    int x = i - i % 3, y = j - j % 3;
    for (int a = 0; a < 3; a++)
        for (int b = 0; b < 3; b++)
            if (g[x+a][y+b] == k) return false;
    return true;
}

bool s() {
    for (int i = 0; i < 9; i++)
        for (int j = 0; j < 9; j++)
            if (g[i][j] == 0)
                for (int k = 1; k <= 9; k++)
                    if (v(i, j, k)) {
                        g[i][j] = k;
                        if (s()) return true;
                        g[i][j] = 0;
                    }
                return false;
    return true;
}

int main() {
    for (int i = 0; i < 9; i++)
        for (int j = 0; j < 9; j++)
            cin >> g[i][j];
    s();
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            cout << g[i][j];
            if (j < 8) cout << ' ';
        }
        cout << '\n';
    }
    return 0;
}
2025/7/31 14:38
加载中...