代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<iomanip>
#include<cctype>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<algorithm>
#include<utility>
#include<deque>
#include<ctime>
#define MAXN 10
using namespace std;
bool h[MAXN][MAXN],l[MAXN][MAXN],fz[MAXN][MAXN];
int a[MAXN][MAXN],b[MAXN][MAXN];
void search(int i,int j){
if(i==10){
for(register int q=1;q<=9;q++){
for(register int e=1;e<=9;e++){
printf("%d ",b[q][e]);
}
printf("\n");
}
return;
}
if(a[i][j]){
b[i][j]=a[i][j];
if(j<9) search(i,j+1);
else search(i+1,1);
}
else{
int id=(i-1)/3*3+(j+2)/3;
for(int k=1;k<=9;k++){
if(!h[i][k]&&!l[j][k]&&!fz[id][k]){
b[i][j]=k;
h[i][k]=l[j][k]=fz[id][k]=true;
if(j<9) search(i,j+1);else search(i+1,1);
h[i][k]=l[j][k]=fz[id][k]=false;
}
}
}
}
int main(){
for(register int i=1;i<=9;i++){
for(register int j=1;j<=9;j++){
scanf("%d",&a[i][j]);
if(a[i][j]){
int id=(i-1)/3*3+(j+2)/3;
h[i][a[i][j]]=l[j][a[i][j]]=fz[id][a[i][j]]=true;
}
}
}
search(1,1);
return 0;
}
具体情况:
第一次:AC
(同代码)二十天以后,第二次:前两个点UKE,最后一个点RE
这是为什么呢(难道数据变了)