N皇后问题(数组栈|N皇后问题(数组栈 和 回溯)

题意
【N皇后问题(数组栈|N皇后问题(数组栈 和 回溯)】给定n*n大小棋盘,皇后可以吃掉同行列斜线上的其他棋子。求棋子间不重复的摆法
源代码(数组栈

#include using namespace std; long long stack[30],top,a[30],n,sum; int check(long long k,long long p) //返回k行p列放置皇后是否冲突 { for (int i=1; i>n; top=1; sum=0; while (!stack[0]) //第一行尝试结束,stack0 会递增,于是不达成条件退出循环 { if (top>n) { //top代表将要摆放第几行的棋子,大于n即是有解 cout<<"find out:-------------"<n) { //大于n的话这行尝试结束,返回上行。 stack[top]=0; top--; continue; } else { //往下一层尝试 a[stack[top]]=1; top++; stack[top]=0; } } cout<
源代码(回溯)
#include using namespace std; int a[15],b[15],n,sum; void find(int k) //K为试探的第几行 { if (k>n) //k>n就是找到一个结果 { sum++; return ; } int used; //用来判断是哦夫和斜线重合的变量 for (int i=1; i<=n; i++) if (!b[i]) { //列不冲突 used=1; for (int j=1; j>n; find(1); cout<

    推荐阅读