八皇后最精简代码(回溯)

转载 2018年04月15日 00:55:35
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。 

1 #include<iostream>
 2 #include<math.h>
 3 using namespace std;
 4 
 5 int n=8;
 6 int total=0;
 7 int *c=new int(n);
 8 
 9 bool is_ok(int row){
10     for(int j=0;j!=row;j++){
11         if(c[row]==c[j] || row-c[row]==j-c[j] || row+c[row]==j+c[j])
12             return false;
13     }
14     return true;
15 }
16 
17 void queen(int row){
18     if(row==n)
19         total++;
20     else
21         for(int col=0;col!=n;col++){
22             c[row]=col;
23             if(is_ok(row))
24                 queen(row+1);
25         }       
26 }
27 
28 int main(){
29     queen(0);
30     cout<<total;
31     return 1;
32 }
33  

【人工智能】八皇后问题-启发式求解

摘要八皇后问题是回溯算法的典型案例,在回溯法中,常常是盲目搜索,耗费过多的搜索时间。在本次实验中,使用了启发式搜索,搜索时不是任取一个分支,而是选择最佳的分支往下搜索。通过定义状态空间、操作规则、搜索...
  • jiange_zh
  • jiange_zh
  • 2015-10-11 11:28:50
  • 2431

<em>人工智能</em>基于启发式搜索的<em>八皇后</em>问题

<em>人工智能</em>基于启发式搜索的<em>八皇后</em>问题,根据定义的启发式函数来快速的搜索<em>八皇后</em>问题,与一般的盲目搜索不同 综合评分:5 收藏评论(1)举报 ...
  • 2018年04月13日 00:00

人工智能:用爬山法、模拟退火算法实现八皇后和八数码问题

这里简单介绍下局部搜索算法。局部搜索算法是对一个或多个状态进行评价和修改,而不是系统地从初始状态开始的路径。这些算法适用于关注那些关注解状态而不是路径代价的问题。局部搜索算法从单个当前节点出发,通常只...
  • chenht8
  • chenht8
  • 2016-11-04 00:58:27
  • 3865

八皇后问题(典型的递归回溯)

八皇后 : 这个代码只是输出一共有多少种摆放的个数。如果想要输出他摆放的不同方法 只需要在递归出口的时候用两个for循环输出棋盘即可。 目的在于每行,每列,以及对角线上都只能放置一个皇后,所...
  • lp15203883326
  • lp15203883326
  • 2016-09-07 20:27:49
  • 2384

经典算法八皇后问题的详解以及回溯(递归)代码示例

  • 2016年03月28日 21:12
  • 3.48MB
  • 下载

回溯法实现<em>八皇后</em>,Web版,完全JavaScript实现

Web版本<em>八皇后</em>算法,完全JavaScript实现,使用VML可视化演示,可完整演示92组解。因为...JS算法之<em>八皇后</em>问题(回溯法) 【<em>人工智能</em>】<em>八皇后</em>问题-启发式求解 JS算法之...
  • 2018年04月13日 00:00

人工智能-八皇后爬山法(最陡上升,首项选择),随即重新启动法

#include #include #include #include using namespace std; int qi[64]; int maze[64]; int check(int i...
  • yinjiakang
  • yinjiakang
  • 2015-11-10 18:07:59
  • 1278

八皇后问题之回溯算法实现&lt;java实现&gt;

 Code: package algorithm ;   public class Empress {              private int n ; //皇后个数 ...
  • pengchengjiji
  • pengchengjiji
  • 2010-11-29 13:52:00
  • 9213

回溯算法(BackTracking)--八皇后问题

0) 回溯算法: 回溯算法也算是遍历算法的一种,回溯算法是对Brute-Force算法的一种改进算法,一个典型的应用是走迷宫问题,当我们走一个迷宫时,如果无路可走了,那么我们就可以退一步,再在其他的路...
  • changyuanchn
  • changyuanchn
  • 2013-12-16 22:17:40
  • 12081

八皇后最精简代码(回溯)

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同...
  • qq_36059563
  • qq_36059563
  • 2018-04-15 00:55:35
  • 7
收藏助手
不良信息举报
您举报文章:八皇后最精简代码(回溯)
举报原因:
原因补充:

(最多只允许输入30个字)