【悬关】数独 位运算优化后仍旧TLE
  • 板块P1784 数独
  • 楼主Literally
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/9/10 10:11
  • 上次更新2023/11/2 21:42:19
查看原帖
【悬关】数独 位运算优化后仍旧TLE
638141
Literally楼主2023/9/10 10:11

RT

#include <iostream>
using namespace std;
int a[15][15];
int row[15][15],col[15][15],cell[15/3][15/3][15];
bool dfs(int x,int y){
	if(x==9) return true;
	if(y==9) return dfs(x+1,0);
	if(a[x][y]) return dfs(x,y+1);
	for(int i=1;i<=9;i++){
		if(!row[x][i] && !col[y][i] && !cell[x/3][y/3][i]){
			row[x][i]=col[y][i] = cell[x/3][y/3][i]=1;
			a[x][y]=i;
			if(dfs(x,y+1)) return true;
			row[x][i]=col[y][i]=cell[x/3][y/3][i]=0;
			a[x][y]=0;
		}
	}
}
int main(){
	for(int i=0;i<9;i++){
		for(int j=0;j<9;j++){
			cin>>a[i][j];
			if(a[i][j]!=0){
				row[i][a[i][j]]=1;
				col[j][a[i][j]]=1;
				cell[i/3][j/3][a[i][j]]=1;
			}
		}
		
	}
	dfs(0,0);
	for(int i=0;i<9;i++){
		for(int j=0;j<9;j++){
			cout<<a[i][j]<<' ';
		}
	}
	return 0;
} 
2023/9/10 10:11
加载中...