P1784求优化
  • 板块学术版
  • 楼主Clare613
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/19 17:17
  • 上次更新2024/10/19 19:39:32
查看原帖
P1784求优化
730276
Clare613楼主2024/10/19 17:17

code:

#include<bits/stdc++.h>
using namespace std;
int a[10][10],b[10][10];
const int c[10][10]=
{
	0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,1,1,1,2,2,2,
    0,0,0,0,1,1,1,2,2,2,
    0,0,0,0,1,1,1,2,2,2,
    0,3,3,3,4,4,4,5,5,5,
    0,3,3,3,4,4,4,5,5,5,
    0,3,3,3,4,4,4,5,5,5,
    0,6,6,6,7,7,7,8,8,8,
    0,6,6,6,7,7,7,8,8,8,
    0,6,6,6,7,7,7,8,8,8
};
bool f1[10][10],f2[10][10],f3[10][10],flag;
void dfs(int x,int y){
	if(flag==1) return ;
	for(int i=1;i<=9;i++){
		for(int j=1;j<=9;j++){
			cout<<b[i][j]<<" ";
		}
		cout<<"\n";
	}
	if(y==10){
		for(int i=1;i<=9;i++){
			for(int j=1;j<=9;j++){
				cout<<b[i][j]<<" ";
			}
			cout<<"\n";
		}
		flag=1;
		return ;
	}
	if(a[x][y]!=0){
		if(f1[y][a[x][y]]==1||f2[c[x][y]][a[x][y]]==1||f3[x][a[x][y]]==1) return ;
		b[x][y]=a[x][y];
		f1[y][a[x][y]]=1;
		f2[c[x][y]][a[x][y]]=1;
		f3[x][a[x][y]]=1;
		dfs(x%9+1,y+(x+1)/10);
		f1[y][a[x][y]]=0;
		f2[c[x][y]][a[x][y]]=0;
		f3[x][a[x][y]]=0;
	}
	else{
		for(int i=1;i<=9;i++){
			if(f1[y][i]==1||f2[c[x][y]][i]==1||f3[x][i]==1) continue;
			b[x][y]=i;
			f1[y][i]=1;
			f2[c[x][y]][i]=1;
			f3[x][i]=1;
			dfs(x%9+1,y+(x+1)/10);
			f1[y][i]=0;
			f2[c[x][y]][i]=0;
			f3[x][i]=0;
		}
	}
}
signed main(){
	cin.tie(0)->sync_with_stdio(0);
	for(int i=1;i<=9;i++){
		for(int j=1;j<=9;j++){
			cin>>a[i][j];
//			cout<<c[i][<<" ";
		}
//		cout<<"\n";
	}
	dfs(1,1); 
	return 0;
}
2024/10/19 17:17
加载中...