没输出(c++)
  • 板块P1784 数独
  • 楼主panshengqi
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/1 19:09
  • 上次更新2024/12/1 21:44:14
查看原帖
没输出(c++)
932993
panshengqi楼主2024/12/1 19:09
#include<bits/stdc++.h>
using namespace std;
int a[10][10],r[10][10],c[10][10],b[10][10][10];
void dfs(int i,int j)
{
	if(i>9)
	{
		for(int x=1;x<=9;x++)
		{
			for(int y=1;y<=9;y++)
			{
				cout<<a[x][y]<<' ';
			}
			cout<<endl;
		}
		exit(0);
	}
	else if(j>9)
	{
		dfs(i+1,1);
	}
	else if(a[i][j]!=0)
	{
		dfs(i,j+1);
	}
	else
	{
		for(int k=1;k<=9;k++)
		{
			int bx=1+(i>3)+(i>6);
			int by=1+(i>3)+(i>6);
			if(r[i][k]==0&&c[j][k]==0&&b[bx][by][k]==0)
			{
				r[i][k]=c[j][k]=b[bx][by][k]=1;			
				a[i][j]=k;
				dfs(i,j+1);
				a[i][j]=r[i][k]=c[j][k]=b[bx][by][k]=0;
			}
		}
	}
}
int main()
{
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=9;j++)
		{
			cin>>a[i][j];
			int bx=1+(i>3)+(i>6);
			int by=1+(i>3)+(i>6);
			int k=a[i][j];
			r[i][k]=c[j][k]=b[bx][by][k]=1;
		}
	}
	dfs(1,1);
	return 0;
}
2024/12/1 19:09
加载中...