转载请注明出处:http://hi.baidu.com/ipress/ 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后 了解了基本的原理后,我们开始分析: 1.我们需要一个数据存放已经放置皇后的位置,用指针表示的一维数据*position,长度为N(N为放置的皇后总数),可能有人会问为什么不用二维数组,用下票i,j准备定位,事实是这样的,因为该问题是每行,每列,每组对角线只可能出现一个皇后,所以用一维数据position+i中的i则能代码第几行,而值*(position+i)则表示该行中的列值,其实质与二维数组无异. 2.判断每行可放置皇后,假设要判断第n行,则从position中从0到n-1每一个已放皇后的位置判断(列,对角线) 具体算法如下: // 转载请注明出处 http://hi.baidu.com/ipress/ #include <iostream> using namespace std; int *position; //放置的位置 //判断第n行是否放置皇后 //设置皇后 if(SignPoint(n))//如果该位置放置皇后正确的话,则到下一行 int main(int argc, char argv[]) |
C++实现 八皇后问题及其扩展N皇后问题(经典回溯算法)
最新推荐文章于 2024-06-06 09:15:00 发布
C++实现 八皇后问题及其扩展N皇后问题(经典回溯算法)