普通的八皇后问题 但为什么运行起来就无法停止了
  • 板块学术版
  • 楼主冰冻罗非鱼
  • 当前回复12
  • 已保存回复12
  • 发布时间2022/2/5 17:45
  • 上次更新2023/10/28 09:38:50
查看原帖
普通的八皇后问题 但为什么运行起来就无法停止了
225941
冰冻罗非鱼楼主2022/2/5 17:45
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int a[10][10];
bool x[1001],y[1001],row[1001],vis[1001][1001];
bool check(int m,int n){
	return !x[m] && !y[n] && !row[n - m + 8] && !vis[m][n];
}
void dfs(int now){
	if(now == 9){
		for(int i = 1; i <= 8; i++){
			for(int j = 1; j <= 8; j++){
				cout << a[i][j];
			}
			cout << endl;
		}
		memset(a,0,sizeof(a));
		return;
	}
	for(int i = 1; i <= 8; i++){
		for (int j = 1; j <= 8; j++){
			if(check(i,j)){
				x[i] = y[j] = row[j - i + 8] = vis[i][j] = a[i][j] = 1;
				dfs(now + 1);
				x[i] = y[j] = row[j - i + 8] = vis[i][j] = a[i][j] = 0;
			}
		}
	}
}
int main(){
	dfs(0);
	return 0;
}
2022/2/5 17:45
加载中...