当前位置:  编程技术>c/c++/嵌入式

C++实现八皇后问题的方法

    来源: 互联网  发布时间:2014-10-28

    本文导语:  本文实例展示了C++实现八皇后问题的方法,是数据结构与算法中非常经典的一个算法。分享给大家供大家参考之用。具体方法如下: 一般在八皇后问题中,我们要求解的是一个8*8的国际象棋棋盘中,放下8个皇后且互相不能攻...

本文实例展示了C++实现八皇后问题的方法,是数据结构与算法中非常经典的一个算法。分享给大家供大家参考之用。具体方法如下:

一般在八皇后问题中,我们要求解的是一个8*8的国际象棋棋盘中,放下8个皇后且互相不能攻击的排列总数。皇后的攻击范围为整行,整列,以及其斜对角线。

由于皇后的攻击范围特性,注定我们每行只能放下一个皇后,于是我们要做的只是逐行放下皇后。八皇后问题是回溯法的典型问题。这里我们用的方法很简单:

从第一行开始逐个检索安全位置摆放皇后,一旦有安全位置则考虑下一行的安全位置。如果发现某行没有安全位置,则返回上一行继续检索安全位置;如果发现在最后一行找到了安全位置则输出整个棋盘。

原理很简单,整个程序中表现了这个思想的函数是void Solve()

下面是实现的代码:

 //八皇后问题的实现
#include 
#include 
using namespace std;
//QueenChess类声明
class QueenChess
{
   public:
       QueenChess();     //构造函数
       void Solve();     //求解八皇后问题,并给出放置成功的棋盘总个数 
   private:
       string chessState[8];     //用于存放棋盘状态
       int solves;          //八个皇后放置成功的棋盘解的总个数
       bool SafeJudge(int row,int col) const;  //判断位置(row,col)是否安全
       void PlaceQueen(int row);         //在第row行放置一个皇后
       void DrawChess() const;          //打印八个皇后放置成功的棋盘 
};

//构造函数,将棋盘初始化
QueenChess::QueenChess()
{
   solves=0;
   int i=0,j=0;
   for(;i

    
 
 

您可能感兴趣的文章:

  • Base64编码原理详解及c++编码解码实现
  • 我实现了个J2EE技术的服务器,支持TCP、UDP和数据库,由于性能的原因,需要改为C或C++实现,我是C、C++新手,我该如何入手呢?看什么样的
  • c++实现MD5算法代码示例
  • java 与 C++ 实现后绑定的方法
  • c++通用模板类(template class)定义实现详细介绍
  • Qt实现的C++框架 qtioccontainer
  • 用C或C++实现主存的分配与回收
  • 在linux系统上,如何用C++实现获取和设置系统时间?
  • 文本压缩算法C++实现 Golden Huffman
  • C++标准库实现 libc++
  • C++的XMLRPC实现 XMLRPC++
  • Java/JavaScript API 的 C++ 实现 libj
  • c++ 连接两个字符串实现代码 实现类似strcat功能
  • c++在unix中如何实现CString的方法?或者说有没有替换CString的类?
  • 请问:java中如何实现C++中的sizeof()方法?
  • 用C或C++编程,模拟可变分区存储管理且首次适应的算法实现存储器的分配与回收
  • vim中如何实现c++代码编写的自动格式化和语法高亮的功能?
  • C++实现CreatThread函数主线程与工作线程交互的方法
  • 请教为什么在C++编译通过并实现的程序,在linux下就会出错
  • linux下c++怎样实现回调(CALLBACK)函数?
  • 在linux下如何用c++实现建立一个文件夹
  • c++递归实现n皇后问题代码(八皇后问题)
  • 八皇后问题实现代码分享
  • java N皇后实现问题解析
  • java实现八皇后问题示例分享
  • 8皇后的java实现。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • html<pre>标签自动换行实现方法
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • java tomcat实现Session对象的持久化原理及配置方法介绍
  • 菜鸟提问:一个类实现了一个接口,除了要定义接口的所有方法外,可不可以再添加其他方法?
  • Session id实现通过Cookie来传输方法及代码参考
  • 实现在同一方法中获取当前方法中新赋值的session值解决方法
  • JavaScript实现页面跳转的几种方法(参考代码)
  • 弱智问题:我们怎么才知道要使用的方法需要实现什么接口才能使用这个方法呢?
  • java实现判断字符串是否全是数字的四种方法代码举例
  • 自己实现strcpy函数的实现方法
  • 网站到底怎么实现盈利赚钱:个人网站赚钱方法大总结
  • php通过数组实现多条件查询实现方法(字符串分割)
  • 在Servlet中方法doGet和doPost分别实现什么功能,Html中表单的get、post方法我就不明白
  • DevExpress实现GridControl显示Gif动画的方法
  • Collections.sort()方法,已经实现Comparable接口,为什么无法将Vector排序?
  • C#实现获取枚举中元素个数的方法
  • 请问聊天室中显示用户在线离线的原理是怎样?有哪些方法实现呢?
  • 请问jdk源程序中,许多native方法是怎么实现的?
  • c# 重载WndProc,实现重写“最小化”的实现方法
  • mysql中文排序注意事项与实现方法
  • Winform实现抓取web页面内容的方法
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3