#8 TLE求大佬检查
查看原帖
#8 TLE求大佬检查
406170
Jason_yinkai楼主2021/8/5 18:48

救救小学生吧

#include<iostream>
using namespace std;
int map[15];//第i行的皇后放在map[i]列上,假设map[3] = 7,那么说明i行,皇后放在第7列。
int cnt,n;
void _cout(int num){
	if(num <= 3){
		for(int i = 1;i <= n;i++){
			cout<<map[i]<<" ";
		}
		cout<<endl;
	}
}
bool check(int x,int y){
	for(int i = 1;i <= x;i++){
		if(map[i] == y)return false;//竖排放了没有 
		if(i + map[i] == x + y)return false;//斜上方放了没有 
		if(i - map[i] == x - y)return false;//斜下方放了没有
	}
	return true;
}
void dfs(int x){
	if(x == n + 1){
		//产生了一组解。 
		cnt++;
		_cout(cnt);
		return;
	}
	for(int i = 1;i <= n;i++){
		if(check(x,i)){
			map[x] = i;
			dfs(x + 1);
			map[x] = 0;
		}
	}
} 
int main(){
	cin>>n;
	dfs(1);
	cout<<cnt;
}

2021/8/5 18:48
加载中...