求助,样例没过
  • 板块P1784 数独
  • 楼主zzb1217
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/9/20 15:22
  • 上次更新2023/11/2 19:00:09
查看原帖
求助,样例没过
746761
zzb1217楼主2023/9/20 15:22
#include <bits/stdc++.h>
using namespace std;
int a[101][101];
bool f[101][101],gg[101][101],u[101][101],v[101][101];
void print()
{
	for (int i=1;i<=9;++i) 
	{
		for (int j=1;j<=9;++j)
		{
			cout << a[i][j] << " ";
		}
		puts("");
	}
	exit(0);
}
void dfs(int i,int j)
{
	if (a[i][j]!=0)
	{
		if (i==9&&j==9)
		{
			print();	
		}
		else if (j==9)
		{
			dfs(i+1,j);
		}
		else {dfs(i,j+1);}
	}
	else
	{
		for(int t=1;t<=9;++t)
        { 
            if(u[i][t]==0&&v[j][t]==0&&gg[(i-1)/3*3+(j-1)/3+1][t]==0)
            {
                a[i][j]=t;
                u[i][t]=1;
                v[j][t]=1;
                gg[(i-1)/3*3+(j-1)/3+1][t]=1;
                if(i==9&&j==9) {print();}
                if(j==9) {dfs(i+1,1);} 
				else {dfs(i,j+1);}
                a[i][j]=0;
                u[i][t]=0;
                v[j][t]=0;
                gg[(i-1)/3*3+(j-1)/3+1][t]=0;
            }
        } 
	}
}
int main()
{
	for (int i=1;i<=9;++i)
	{
		for (int j=1;j<=9;++j)
		{
			int x;
			cin >> x;
			if (x!=0)
			{
				u[i][a[i][j]]=v[j][a[i][j]]=gg[(i-1)/3*3+(j-1)/3+1][a[i][j]]=0;
			}
			a[i][j]=x;
		}
	}
	dfs(1,1);
	return 0;
}
2023/9/20 15:22
加载中...