我这代码哪里错了啊!!
#include<bits/stdc++.h>
#define int long long
#define mem(a) memset(a,0,sizeof(a))
#define set(a,b) memset(a,b,sizeof(a))
const int MAXN = 0x3f3f3f3f;
using namespace std;
int mp[10][10];
int vx[10][10], vy[10][10], vc[10][10];
void dfs(int x, int y){
if(x == 9){
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++)
cout << mp[i][j] << " ";
cout << endl;
}
return ;
}
if(y == 9){
dfs(x + 1, 0);
return;
}
if(mp[x][y]) //非0
dfs(x, y + 1); //向下一列搜
else for(int i = 1; i <= 9; i++){
if( !vx[x][i] && !vy[y][i] && !vc[x / 3 * 3 + y / 3][i])
vx[x][i] = 1;
vy[y][i] = 1;
vc[x / 3 * 3 + y / 3][i] = 1;
mp[x][y] = i;
dfs(x, y + 1);
//回溯
mp[x][y] = 0;
vx[x][i] = 0;
vy[y][i] = 0;
vc[x / 3 * 3 + y / 3][i] = 0;
}
}
signed main(){
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++){
cin >> mp[i][j];
vx[i][mp[i][j]] = 1; //行
vy[j][mp[i][j]] = 1; //列
vc[i / 3 * 3 + j / 3][mp[i][j]] = 1; //九宫格
}
}
dfs(0,0);
return 0;
}