是一个递归算法,现在是要解决没输出的问题 p1784
#include<bits/stdc++.h>
using namespace std;
int m[100][100];
bool n=0;
void put(int x,int y){
// cout<<'('<<x<<','<<y<<") ";
int flag=0;//判定数字是否可行
for(int i=1;i<=9&&n==0;i++){//put number
for(int j=1;j<=9&&m[x][y]==0;j++){//check x
if(m[y][j]==i){
// cout<<m[y][j]<<' '<<j<<' '<<i<<endl;
flag=1;
break;
}
}
for(int j=1;j<=9&&flag==0&&m[x][y]==0;j++){//check y
// cout<<2;
if(m[j][x]==i){
flag=1;
break;
}
}
if(flag){
continue;
}
if(m[x][y]==0){
m[x][y]=i;
}
if(x==9&&y==9){
for(int a=1;a<=9;a++){
for(int j=1;j<9;j++){
cout<<m[i][j]<<' ';
}
cout<<endl;
}
n=1;
return;
}
if(x==9)put(1,y+1);
else put(x+1,y);
m[x][y]=0;
}
return;
}
int main(){
for(int i=1;i<=9;i++){
for(int j=1;j<9;j++){
cin>>m[i][j];
}
}
put(1,1);
}