`
- 浏览:
201861 次
- 性别:
- 来自:
青岛
-
-
#include<iostream.h>
-
#include<stdio.h>
-
#include<math.h>
-
#include<conio.h>
-
#defineMAXNUMBER20//最大求解数
-
-
-
voidoutput_queens(intx[],intn)
- {
- for(inti=1;i<=n;i++)
- printf("%3d",x[i]);
- printf("\n");
- }
-
-
boolcheck(intx[],intk)
- {
- for(inti=1;i<k;i++)
- {
- if(x[i]==x[k]||abs(k-i)==abs(x[k]-x[i]))
- returnfalse;
- }
- returntrue;
- }
-
-
intn_queens(intn,intx[])
- {
- intnCount=0;
- intk=1;
- x[1]=0;
- while(k>0)
- {
- x[k]=x[k]+1;
- while(x[k]<=n&&!check(x,k))
- x[k]=x[k]+1;
- if(x[k]<=n)
- {
- if(k==n)
- {
- nCount++;
- output_queens(x,n);
- }else
- {
- k++;
- x[k]=0;
- }
- }else
- {
- x[k]=0;
- k--;
- }
- }
- returnnCount;
- }
-
voidmain()
- {
- intn=8;
- intx[MAXNUMBER]={0};
- printf("GameStart:\n");
- intnCount=n_queens(8,x);
- printf("TotalNumber:%4d\n",nCount);
- printf("Gameover!!!\n\n\n");
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
n 皇后问题是一道经典的回溯算法问题,其目标是在一个 � × � n×n 的棋盘上放置 � n 个皇后,使得任意两个皇后都不能在同一行、同一列或同一斜线上。 栈可以用来辅助实现回溯算法,本质上就是手动维护了递归...
算法设计作业,用c++编写的,回溯法求解n皇后问题 运行环境VC6.0
N皇后问题求解,分别是递归方法实现和非递归方法实现,后者采用回溯方法,C语言实现的
此过程使用回溯算法求出在一个n*n棋盘上放置n个皇后,使其任意两个皇后即不同行,也不同列,也不在同一斜角线上
回溯法实现n皇后问题,并输出每种放法的皇后位置
分别用随机算法和回溯法求解N皇后问题 附有详细C++源代码
本算法是根据经典的八皇后的问题提出来的,采用了递归回溯法解决问题。
算法n皇后排列树代码 一、 理解回溯法深度优先搜索策略 掌握用回溯法解题的算法框架: (1)递归回溯 (2)子集树算法框架 (3)迭代回溯 (4)排列树算法框架 二、实验内容: 问题描述 用排列树实现8皇后问题 ...
回溯法求解n皇后问题,n皇后问题是一个非常有意思的游戏
算法分析实验 回溯法求解N皇后问题 源代码
用C++实现N皇后的确定算法、随机算法、随机回溯算法等高级算法实现N皇后问题
用回溯法求皇后问题,在n*n格的棋盘上放置n个皇后,使它弱彼此不攻击,彼此不同处在同一行,同一列和同一条斜线上面,用了比较精简的算法,内有说明,在vc6通过测试
一个用三种方法解决N皇后问题并且效率很高的c语言程序。 用到了前向检查的回溯法 、基本回溯算法、面向冲突的回跳法等三种方法解决问题。
采用回溯的思想方法求解n皇后问题,并将所有结果输入到文件中显示出来。
在n*n格的棋盘上放置彼此不受攻击的n个皇后。按照国际向其的规则,皇后可以攻击同一行、同一列、同一斜线上的棋子。
N皇后问题回溯法、FIFO分支限界算法,内部包含两个函数,在main函数中分别运行。
回溯实现n后问题,用c语言实现,默认定义皇后个数为五个,可以自己定义,输出排列结果,本程序只是简单的利用回溯法实现五皇后问题,
使用分支限界法解决N皇后问题。因为是广度优先,而且占用比较多的额外空间,所以并不是解N皇后问题的很好的算法,主要是理解分支限界法的使用。
回溯,遗传,爬山法求解N皇后问题算法比较
该代码为算法实验中比较典型的问题 回溯法求N皇后位置的问题,代码简单,适合初学者