#include<stdio.h>
#include<vector>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
using namespace std;
int A[10][10];
struct Pos
{
int row,col;
};
bool judge(Pos p,int n)
{
for(int i=0;i<9;i++)
if(n == A[i][p.col] || n == A[p.row][i])
return false;
int t_row = (p.row/3)*3;
int t_col = (p.col/3)*3;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
if(n==A[t_row+i][t_col+j])
return false;
}
return true;
}
void shudu(Pos position[],int len,int now)
{
if(now == len)
{
for(int ii=0;ii<9;ii++)
{
for(int jj=0;jj<9;jj++)
cout<<A[ii][jj]<<" ";
cout<<endl;
}
return ;
}
for(int i=1;i<=9;i++)
if(judge(position[now],i))
{
A[position[now].row][position[now].col]=i;
shudu(position,len,now+1);
A[position[now].row][position[now].col]=0;
}
}
int main()
{
freopen("input.txt","r",stdin);
Pos AA[100];
int len=0;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
scanf("%d",&A[i][j]);
if(!A[i][j])
{
AA[len].row=i;
AA[len].col=j;
len++;
}
}
shudu(AA,len,0);
return 0;
}
数独
最新推荐文章于 2025-03-06 13:26:45 发布