样例不过
  • 板块P1784 数独
  • 楼主hao12345ia
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/24 21:58
  • 上次更新2024/6/25 11:42:32
查看原帖
样例不过
1258467
hao12345ia楼主2024/6/24 21:58
#include<bits/stdc++.h>
using namespace std;
int ans[10][10];
bool hang[10][10];
bool lie[10][10];
bool gei[10][10];
void dfs(int x,int y){
	if(ans[x][y]!=0){
		if(x==9&&y==9){
			for(int i=1;i<=9;i++){
				for(int j=1;j<=9;j++){
					cout<<ans[i][j]<<" ";
				}
				cout<<endl;
			}
			return ;
		}
		else if(y==9){
			dfs(x+1,1);
		}
		else{
			dfs(x,y+1);
		}
	}
	else{
		for(int i=1;i<=9;i++){
			if(lie[x][i]==false&&hang[y][i]==false&&gei[(x-1)/3*3+(y-1)/3+1][i]){
				lie[x][i]=true;
				hang[y][i]=true;
				gei[(x-1)/3*3+(y-1)/3+1][i]=true;
				ans[x][y]=i;
				dfs(x,y);
				lie[x][i]=false;
				hang[y][i]=false;
				gei[(x-1)/3*3+(y-1)/3+1][i]=false;
				ans[x][y]=0;
				
			}
		}
	}
}
int main(){
	for(int i=1;i<=9;i++){
		for(int j=1;j<=9;j++){
			cin>>ans[i][j];
			gei[(i-1)/3*3+(j-1)/3+1][ans[i][j]]=true;
		}
	}
	dfs(1,1);
} 
2024/6/24 21:58
加载中...