一维数组实现八皇后问题
八皇后问题是回溯法的经典例题。具体解法很多,递归的非递归的,网上都可以找到。但他们都有一个共同之处,均使用二维数组。这样做很直观易懂。
实际上,通过八皇后的条件约束可知,每行有且仅有一个皇后,我们完全可以使用一个长度为8的一维数组 int a[8]来保存所有信息。这样的话,在具体搜索时的判断也会方便很多,代码量也大大减少。
代码块
代码在qt5.5.0上调试成功:
#include <iostream>
using namespace std;
int hefa(int k,int *p) //判断第k行的皇后是否放置的合法
{
for(int i=0;i<k;i++) if( p[i]==p[k]||p[i]+i==p[k