本文主要是介绍51nod 2067 n 皇后问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int n, res = 0;
int pos[11];void dfs(int k){ //前0~k-1个皇后已经摆好了,现在摆第k个 if(k == n){res++; return;} for(int i = 0; i < n; i++){ //尝试摆在不冲突的某一列 int j;for(j = 0; j < k; j++){ //遍历前面所有行 查询 if(pos[j] == i || abs(pos[j] - i) == abs(j - k)) break;}if(j == k){ //说明当前列可以摆 pos[k] = i;dfs(k+1); //处理第k+1个皇后 } }}
int main(){cin >> n;dfs(0);cout<<res<<endl;return 0;
}
这篇关于51nod 2067 n 皇后问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!