请问同一份代码的结果为什么会不同
  • 板块P1784 数独
  • 楼主Binaries
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/8/15 15:57
  • 上次更新2023/11/6 20:12:33
查看原帖
请问同一份代码的结果为什么会不同
298385
Binaries楼主2020/8/15 15:57

代码:

#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

这是为什么呢(难道数据变了)

2020/8/15 15:57
加载中...