RE,但站外同题
  • 板块P1784 数独
  • 楼主danaqi
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/8/5 07:43
  • 上次更新2023/10/27 16:57:47
查看原帖
RE,但站外同题
449782
danaqi楼主2022/8/5 07:43

目测读入re,但是没有一点头绪。
样例:
100000000
000100000
000000100
010000000
000010000
000000010
001000000
000001000
000000020
代码:\

#include<bits/stdc++.h>
#define for_all1(a,b) {for(int i=1;i<10;i++){\
						 for(int j=1;j<10;j++)\
						 	 {a;};\
						 {b;};\
					   }}
#define for_all2(a) {for(int i=1;i<10;i++)\
						 {a;};\
					}
#define print() {for_all1((cout<<sd[i][j]<<' '),(cout<<endl));exit(0);}
#define dfs_next(x,y) {if((x)==9&&(y)==9){print();}\
					   else if((y)==9)dfs((x)+1,1);\
					   else dfs((x),(y)+1);\
					  }
#define clac(x,y) (((x)-1)/3*3+((y)-1)/3+1)
#define tr(x,y,z) (!hg[(x)][(z)]&&!le[(y)][(z)]&&!gz[clac((x),(y))][(z)])
using namespace std;
int sd[15][15],hg[15][15],le[15][15],gz[15][15];
void dfs(int x,int y){
	//cerr<<x<<' '<<y<<endl;
	if(sd[x][y]){dfs_next(x,y);}
	else for_all2({
		if(!tr(x,y,i))continue;
		sd[x][y]=i;
		hg[x][i]=le[y][i]=gz[clac(x,y)][i]=1;
		dfs_next(x,y);
		sd[x][y]=0;
		hg[x][i]=le[y][i]=gz[clac(x,y)][i]=0;
	})
}
int main(){
	for_all1({
		cin>>sd[i][j];
		//cerr<<i<<' '<<j<<' '<<clac(i,j)<<endl;
		if(sd[i][j])hg[i][sd[i][j]]=le[j][sd[i][j]]=gz[clac(i,j)][sd[i][j]]=1;
		//cerr<<i<<' '<<j<<endl;
	},{})
	dfs(1,1);
	cout<<0<<endl;
	return 0;
}
2022/8/5 07:43
加载中...