万分感谢!
好人108生平安
#include<bits/stdc++.h>
#define N 9
using namespace std;
int a[10][10];
bool check(int ii,int jj,int num)
{
for(int i=1;i<=N;i++)
if(a[ii][i]==num||a[i][jj]==num)
return false;
int ti=ii%3==0?ii-2:(ii/3)*3+1;
int tj=jj%3==0?jj-2:(jj/3)*3+1;
for(int i=ti;i<=ti+2;i++)
for(int j=tj;j<=tj+2;j++)
if(a[i][j]==num)
return false;
return true;
}
void dfs(int ii,int jj)
{
if(ii>N)
{
printf("Done!\n");
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
return ;
}
if(a[ii][jj])
{
dfs(jj==N?ii+1:ii,jj==N?jj+1:1);
return ;
}
for(int i=1;i<=N;i++)
if(check(ii,jj,i))
{
a[ii][jj]=i;
dfs(jj==N?ii+1:ii,jj==N?jj+1:1);
a[ii][jj]=0;
}
}
int main()
{
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
scanf("%d",&a[i][j]);
printf("Loading...\n\n");
dfs(1,1);
return 0;
}