code:
#include<bits/stdc++.h>
using namespace std;
const int N = 10;
int a[N][N];
void dfs(int x, int y) {
if (y == 10) {
if (x == 9) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
cout << a[i][j] << ' ';
}
cout << '\n';
}
exit(0);
} else {
dfs(x + 1, 1);
return;
}
}
if (a[x][y] == 0) {
for (int i = 1; i <= 9; i++) {
bool flag = 0;
for (int j = 1; j <= 9; j++) {
if (a[x][j] == i) {
flag = 1;
}
}
if (!flag) {
for (int j = 1; j <= 9; j++) {
if (a[j][y] == i) {
flag = 1;
}
}
if (!flag) {
if (x >= 1 && x <= 3) {
if (y >= 1 && y <= 3) {
for (int j = 1; j <= 3; j++) {
for (int k = 1; k <= 3; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
} else if (y >= 4 && y <= 6) {
for (int j = 1; j <= 3; j++) {
for (int k = 4; k <= 6; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
} else {
for (int j = 1; j <= 3; j++) {
for (int k = 7; k <= 9; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
}
} else if(x >= 4 && x <= 6) {
if (y >= 1 && y <= 3) {
for (int j = 4; j <= 6; j++) {
for (int k = 1; k <= 3; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
} else if (y >= 4 && y <= 6) {
for (int j = 4; j <= 6; j++) {
for (int k = 4; k <= 6; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
} else {
for (int j = 4; j <= 6; j++) {
for (int k = 7; k <= 9; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
}
} else {
if (y >= 1 && y <= 3) {
for (int j = 7; j <= 9; j++) {
for (int k = 1; k <= 3; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
} else if (y >= 4 && y <= 6) {
for (int j = 7; j <= 9; j++) {
for (int k = 4; k <= 6; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
} else {
for (int j = 7; j <= 9; j++) {
for (int k = 7; k <= 9; k++) {
if ((j != x || k != y) && a[j][k] != i) {
flag = 1;
}
}
}
if (!flag) {
a[x][y] = i;
dfs(x, y + 1);
}
}
}
}
}
}
}
}
int main() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
cin >> a[i][j];
}
}
dfs(1, 1);
return 0;
}