N皇后问题
/* 问题描述: 输入一个数字,确定棋盘大小,在棋盘中放入n个皇后,并使其能共存*/#include#include#includeusing namespace std;//皇后的列项int position[1000];//棋盘预定义int chess[10000][10000];//棋盘的规模 默认为8int N;/* 解题思路 NQueen()第一行确定好 确定下一行 到达底部时 即输出*/void NQueen(int n);void print(int a);int main(){ cin >> N; NQueen(0);}void print(int a){ cout << a << " ";}void NQueen(int n){ if(n==N) { //到底了 打印 返回 for_each(position,position+N,print); cout << endl; return; } //逐步尝试皇后在列的位置 for(int i = 0;i < N;i++) { /* 检验是否与已有的冲突 不能同列 同斜 循环遍历同斜 */ for(int j = 0;j < n;j++) { //斜边 行数-行数 列数减列数 有冲突 找该行 下一列 if(i == position[j]||abs(n-j)==abs(i-position[j])) goto loop; } /* 没有冲突 放皇后的位置 找下一行 */ position[n] = i; NQueen(n+1); loop: }}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~