0分求助_输出中出现了0
  • 板块P1784 数独
  • 楼主shenqing_QAQ
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/5 17:37
  • 上次更新2024/1/5 19:18:27
查看原帖
0分求助_输出中出现了0
884905
shenqing_QAQ楼主2024/1/5 17:37
#include<bits/stdc++.h>
using namespace std;
int a[11][11],nex,ney,t;
bool h[11][11],l[11][11],g[11][11];
void dfs(int x,int y)
{
	if(y==9) nex=x+1,ney=1;
	else nex=x,ney=y+1;
	
	if(a[x][y])
	{
		if(x!=9||y!=9)dfs(nex,ney);
		else
		{
			for(int i=1;i<=9;i++)
			{
				for(int j=1;j<=9;j++)printf("%d ",a[i][j]);
				printf("\n");
			}
			exit(0);
		}
	}
	else
	{
		for(int i=1;i<=9;i++)
		{
			if((!h[x][i])&&(!l[y][i])&&(!g[(x-1)/3*3+(y-1)/3+1][i]))
			{
				//printf("%d %d %d\n",x,y,i);
				a[x][y]=i;		
				h[x][i]=1;
				l[y][i]=1;
				g[(x-1)/3*3+(y-1)/3+1][i]=1;
				if(x!=9||y!=9)dfs(nex,ney);
				else
				{
					for(int k=1;k<=9;k++)
					{
						for(int j=1;j<=9;j++)printf("%d ",a[k][j]);
						printf("\n");
					}
					exit(0);
				}
				h[x][i]=0;
				l[y][i]=0;
				g[(x-1)/3*3+(y-1)/3+1][i]=0;
				a[x][y]=0;
			}
		}
	}
	return ;
}
int main()
{
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=9;j++)
		{
			scanf("%d",&t);
			if(!t) continue;
			h[i][t]=1;
			l[j][t]=1;
			g[(i-1)/3*3+(j-1)/3+1][t]=1;
			a[i][j]=t;
		}
	}
	printf("\n");
	dfs(1,1);
	return 0;
}
2024/1/5 17:37
加载中...