这代码哪里出问题了啊
  • 板块P1784 数独
  • 楼主Candycar
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/7/23 15:00
  • 上次更新2023/11/4 13:34:18
查看原帖
这代码哪里出问题了啊
398818
Candycar楼主2021/7/23 15:00

我这代码哪里错了啊!!

#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;
}

2021/7/23 15:00
加载中...