【题解】
搜索每一种可能,输出可行方案即可。
【代码】
#include <bits/stdc++.h>
using namespace std;
int mp[12][12];
bool check(int cnt)
{
int x=cnt/9,y=cnt%9;
for(int i=0;i<9;i++)
if(mp[x][i]==mp[x][y]&&i!=y)
return false;
for(int i=0;i<9;i++)
if(mp[i][y]==mp[x][y]&&i!=x)
return false;
int xx=x/3*3,yy=y/3*3;
for(int i=xx;i<xx+3;i++)
for(int j=yy;j<yy+3;j++)
if(mp[i][j]==mp[x][y]&&i!=x&&j!=y)
return false;
return true;
}
void dfs(int cnt)
{
if(cnt==81){
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
printf(j<8?"%d ":"%d",mp[i][j]);
return;
}
int x=cnt/9,y=cnt%9;
if(!mp[x