n 后问题
n后问题,解决思路:假设每个皇后占一行(且第i个皇后放在第i - 1 行),依次去尝试下一个皇后该放在该行的哪一列
#include<iostream>
#include<cmath>
using namespace std ;
class queen
{
public : queen (){};
//queen(int row = -1, int col = -1) : m_row(row), m_col(col) {} void setRow( int row) { m_row = row ; }
void setCol( int col) { m_col = col ; } int getCol() const {return m_col ; }
int getRow() const {return m_row ; } private : int m_row;
int m_col;
}; // curr : 当前的皇后序号(第几个皇后),该值也表明该皇后在第几行
void Queue( queen * nq , int curr , int *sum , int n )
{
if ( curr == n )
{
for (int i = 0 ; i < n ; i ++)
{
cout << nq [i ]. getCol()<< " " ;
}
cout <<endl ;
(* sum )++; return ;
}
int i, j;
for ( i = 0 ; i < n; i++) // i 表示所有列,依次尝试放在每一列
{
for ( j = 0 ; j < curr; j++) // j 代表已经放下的皇后
{
//if( abs(nq[j].getCol() - nq[i].getCol()) == abs(nq[j].getRow() - nq[i].getRow()) || nq[i].getCol() == nq[j].getCol())
if ( abs (nq [j ]. getCol() - i) == abs (nq [j ].getRow () - curr ) || nq [j ].getCol () == i)
break ;
}
if ( j == curr ) // 可以放下,和前 curr - 1 个皇后都不冲突
{
nq[ curr ].setCol (i );
Queue (nq , curr + 1 , sum , n );
}
}
} int nqueenP( int n)
{
queen * nq = new queen [n ]; for (int i = 0 ; i < n ; i ++)
{
nq[ i]. setRow (i );
nq[ i]. setCol (0 );
} int sum = 0 ; Queue (nq ,0 ,&sum ,n ); return sum ;
} int main()
{
cout <<"8 Queue Result: " << nqueenP( 8 )<<endl ;
}
n 后问题的更多相关文章
- Tomcat shutdown执行后无法退出进程问题排查及解决
问题定位及排查 上周无意中调试程序在Linux上ps -ef|grep tomcat发现有许多tomcat的进程,当时因为没有影响系统运行就没当回事.而且我内心总觉得这可能是tomcat像nginx一 ...
- XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法
在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...
- iPhone Anywehre虚拟定位提示“后台服务未启动,请重新安装应用后使用”的解决方法
问题描述: iPhone越狱了,之后在Cydia中安装Anywhere虚拟定位,但是打开app提示:后台服务未启动,请重新安装应用后使用. 程序无法正常使用... 解决方法: 打开Cydia-已安装, ...
- Hyper-V 激活Windows系统重启后黑屏的解决方法 + 激活方法
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- js获取给定月份的N个月后的日期
1.在讲js获取给定月份的N个月后的日期之前,小颖先给大家讲下getFullYear().getYear()的区别. ①getYear() var d = new Date() console.log ...
- 拼图小游戏之计算后样式与CSS动画的冲突
先说结论: 前几天写了几个非常简单的移动端小游戏,其中一个拼图游戏让我郁闷了一段时间.因为要获取每张图片的位置,用`<style>`标签写的样式,直接获取计算后样式再用来交换位置,结果就悲 ...
- 使用蓝灯后,IE浏览器以及内置IE浏览器的程序不能使用的解决方案
使用完蓝灯后,每次使用IE浏览器都不能正常使用,于是有了下面的这个方案 1.通过Win+R 打开注册表编辑器(regedit) 进入目录 HKEY_CURRENT_USER \ Software \ ...
- VS项目中使用Nuget还原包后编译生产还一直报错?
Nuget官网下载Nuget项目包的命令地址:https://www.nuget.org/packages 今天就遇到一个比较奇葩的问题,折腾了很久终于搞定了: 问题是这样的:我的解决方案原本是好好的 ...
- [修正] Firemonkey TFrame 存档后,下次载入某些事件连结会消失(但源码还在)
问题:Firemonkey TFrame 存档后,下次载入某些事件连结会消失(但源码还在) 解决:(暂时方法) type TTestFrame = class(TFrame) public const ...
- eclipse — 导入android项目后识别成java项目的问题及解决
最近在eclipse导入android项目的时候遇到了奇葩问题,再此记录 遇到的问题就是:将完好的android项目导入到eclipse的时候,原本这是一个很容易的事情,但是导入成功后发现,,,靠ec ...
随机推荐
- 让input支持 ctrl v上传粘贴图片? 让input支持QQ截图或剪切板中的图像数据(Java实现保存)
原理:监听粘贴 → 获取粘贴内容 → 将内容上传 → 抓取后返回替换至input 我们在生产中用到的界面: 测试地址 http://sms.reyo.cn 用户名:aa 密码:123456 以下是PH ...
- showmessage函数里
首先说一下,漏洞是t00ls核心群传出去的,xhming先去读的,然后我后来读的,读出来的都是代码执行,1月5日夜里11点多钟,在核心群的黑客们的要求下,xhming给了个poc,我给了个exp,确实 ...
- WPF应用程序最小化到系统托盘
using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows; u ...
- Oracle 11g导入导出命令
首先需要进入系统的cmd: 执行导出命令,效果如下 expdp hisjk/hisjk@orcl directory=DATA_PUMP_DIR dumpfile=hisjk.dmp SCHEMAS ...
- http协议读书笔记1-概述
1.http协议在网络中的位置: http协议位于TCP协议的上层,http试用tcp来传输其报文数据,tcp在ip的上层. 2.浏览器发起连接的过程 上述图的过程是: 浏览器从url中解析出服务区的 ...
- asp.net web 后台判断提示框,点击'是'执行代码A(),点击'否'执行代码B()
html code <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server&q ...
- ECShop 添加文章时作者默认为当前登录用户
打开admin\article.php文件 查找代码 $article['is_open'] = 1; 在下边添加代码 $article['author'] = $_SESSION['admin_na ...
- IPv6 app适配
参考资料: https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/Network ...
- 99 Lisp Problems 二叉树(P54~P69)
P54A (*) Check whether a given term represents a binary tree Write a predicate istree which returns ...
- 阿里云centos试用
今天体验了下阿里云的centos,起初用的官方推荐的putty方式来管理,全部使用命令行管理起来还是很别扭的. 后来通过百度了解到winscp,有了这个工具,管理起来就爽很多啦.整个centos的管理 ...