rt,找不到错啊。。。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int gong[10][10] = {
{0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,2,2,2,3,3,3},
{0,1,1,1,2,2,2,3,3,3},
{0,1,1,1,2,2,2,3,3,3},
{0,4,4,4,5,5,5,6,6,6},
{0,4,4,4,5,5,5,6,6,6},
{0,4,4,4,5,5,5,6,6,6},
{0,7,7,7,8,8,8,9,9,9},
{0,7,7,7,8,8,8,9,9,9},
{0,7,7,7,8,8,8,9,9,9}
};
int a[15][15];
bool vis[15][15],cntr[15][15],cntc[15][15],cntg[15][15];
void dfs(int x,int y) {
if(x == 10 && y == 1) {
for(int i = 1;i <= 9;i++) {
for(int j = 1;j <= 9;j++) {
cout << a[i][j] << " \n"[j == 9];
}
}
exit(0);
}
if(vis[x][y]) return;
int nx = x,ny = y+1;
if(ny == 10) nx = x+1,ny = 1;
if(a[nx][ny]) {
dfs(nx,ny);
return;
}
for(int i = 1;i <= 9;i++) {
if(cntr[x][i] || cntc[y][i] || cntg[gong[x][y]][i]) continue;
cntr[x][i] = cntc[y][i] = cntg[gong[x][y]][i] = true;
a[x][y] = i;
dfs(nx,ny);
cntr[x][i] = cntc[y][i] = cntg[gong[x][y]][i] = false;
a[x][y] = 0;
}
}
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;
}
悬一关!