c++编程设计,求在n×m不可能的棋盘盘上放k颗皇后的放法(1≤k≤n,m)(皇后可以斜着吃棋)(保证互相

9780人阅读
#include &iostream&
class Queen{
&Queen(){}
&Queen(int i):Qnum(i){}
&~Queen(){}
&void SetQnum(int i){
&void FindPos();
&enum{MAX=10};
&int col[MAX];
&int M[2*MAX];
&int S[2*MAX];
&int matrix[MAX][MAX];
&void Find(int i);
&void Init();
void Queen::FindPos(){
void Queen::Init(){
&for(int i=0;i&MAX;++i){
&&col[i]=0;
&&for(int j=0;j&MAX;++j)matrix[i][j]=0;
&for(i=0;i&2*MAX;++i)M[i]=S[i]=0;
void Queen::Find(int i){
&for(int j=0;j&Q++j){
&&if(col[j]==0&&M[i-j+Qnum-1]==0&&S[i+j]==0){//列、主对角线、辅对角线,-1起标示作用在矩阵中表示放皇后的位置
&&&col[j]=-1;
&&&M[i-j+Qnum-1]=-1;
&&&S[i+j]=-1;
&&&matrix[i][j]=-1;
&&&if(i&Qnum-1)Find(i+1);
&&&&cout&&&No.&&&++count&&& result:&&&
&&&&for(int iL=0;iL&Q++iL){
&&&&&for(int jC=0;jC&Q++jC)
&&&&&&cout&&matrix[iL][jC]&&'\t';
&&&&&cout&&
&&&&cout&&
&&&col[j]=0;
&&&M[i-j+Qnum-1]=0;
&&&S[i+j]=0;
&&&matrix[i][j]=0;
int main(){
&cout&&&Input the num of queen:&&&//暂时只处理4、8皇后
&Queen obj(num);
&obj.FindPos();
&return 0;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:91925次
积分:1317
积分:1317
排名:千里之外
原创:34篇
转载:29篇
(1)(3)(1)(3)(2)(15)(8)(3)(5)(1)(7)(2)(12)博乐博乐博乐博乐
移动开发Web前端架构设计编程语言互联网数据库系统运维云计算研发管理
新博客专家介绍
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了结丹后期的修炼,
这次要修炼的目标是[不等式]。
正剧开始:
星历日 10:30:26, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[不等式]。
图中绿色部分取值表示A公司划算,否则就是B公司划算了。
由于部分工作需要使用Python进行开发,因此就在家尝试先搭建一个Python的开发环境进行学习。尽管网上的教程比较多,但是对于新手来说,还是会有不少的坑需要填。下面就说说我的Python开发环境搭建过程。
1 Python安装
从官网下载安装包,这里需要根据自己的操作系统类型和位数进行安装包的选择。我这里下载的是windows 32位python2.7.11版本。
下载完成后双击开...
资料来自网上,简单整理,答案后续总结
1、字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件?
答:mknod命令结合设备的主设备号和次设备号,可创建一个设备文件。
评:这只是其中一种方式,也叫手动创建设备文件。还有UDEV/MDEV自动创建设备文件的方式,UDEV/MDEV是运行在用户态的程序,可以动态管理设备文件,包括创建和删除设备文件,...
神经网络之BP算法,梯度检验,参数随机初始化
neural network(BackPropagation algorithm,gradient checking,random initialization)
一、代价函数(cost function)
对于训练集,代价函数(cost
function)定义为:
其中红色方框圈起的部分为正则项,k:输出单...
Android MVC模式
    【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/
    前些天看到一篇关于Android MVC模式的技术贴,觉得非常好,所以跟大家分享一下,顺便也说说自己见解~~
    算来学习Android开发已有2年的历史了,在这2年的学习当中,基本掌握了An...
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
1.1 第一范式(1NF)无重复的列
    所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本...
MongoDB数据表基本操作
查看全部数据表
& use ChatRoom
switched to db ChatRoom
& show collections
system.indexes
system.users
创建数据表
& db.createCollection(&Account&)
Redis的主从复制功能,可以实现Redis实例的高可用,避免单个Redis 服务器的单点故障,并且可以实现负载均衡。
一:主从复制过程
         Redis的复制功能分为同步(sync)和命令传播(commandpropagate)两个操作:
         同步操作用于将从节点的数据库状态更新至主节点当前所处的数据库状态;
         命令传播操作则用于在主节点的...
1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。
  在软件设计中可能会遇到很多类似的问题,在每次遇到类似问题时我们不必全都新想办法来解决,而可以复用之前解决类似问题的方案,解决问题多之后就
  会有针对特定问题有特定(相对固定)的方式方法来解决,这相对固定的方式方法就是设计模式,其也算是经验总结。...
解压后包括这么多东东,运行选中的那个;
选择想安装的产品;
安装目录;
安装完成;
启动演示例子;
看下asp.net的演示;
360警报;默认;阻止;
看下Grid控件的例子;自动在http://localhost:2011/上显示网页;
并没有安装IIS,打开http://127.0.0.1 看是否能访问...
博客已经迁移至Marcovaldo’s blog (http://marcovaldong.github.io/)刚刚完成了Cousera上Machine Learning的最后一周课程,这周介绍了machine learning的一个应用:photo OCR(optimal character recognition,光学字符识别),下面将笔记整理在下面。Photo OCRProblem Desc...
Java学习笔记摘要...
一、点击顶部的状态栏,scrollView会自动回滚到顶部实现思路:
自定义一个View模型
提供显示顶部窗口的接口
在接口方法里面创建window,添加到顶部
给window添加点击手势,点击后scrollView回滚到顶部
1& 添加view模型,提供接口@interface DSBackTopWindow : NSObject/**
显示window
+ (void)...
*1. 什么是StormStorm是Twitter开源的一个分布式的实时计算系统。2. Storm的设计思想
- Storm是对流Stream的抽象,流是一个不间断的无界的连续tuple,注意Storm在建模事件流时,把流中的事件抽象为tuple即元组。
- Storm将流中元素抽象为Tuple,一个tuple就是一个值列表value
list,list中的每个value都有一个na...
说明最近Qt IDE由于出色的跨平台特性,逐步开始流行。编译环境也集成了常用到的编译调试工具。大部分玩Linux的高手应该是自己写脚本来实现一键远程部署和调试等命令。但是对于新手不免有很大难度。下面说说利用QT自带的远程部署工具和远程调试工具gdbserver,远程SSH工具。无需安装NFS。
Gdbserver的安装参见http://blog.chinaunix.net/uid-...
腾讯实习生面试2016两道面试题目?修改
谢谢大神们高质量的回答,满满干货,excited
-----------------------------------------------------------------
回答里有提到保密协议,实习生面试前没有听说这个,并且网上也有很多相关的面经,但为了省去一些不必要的问题,匿了。
------------------------...
LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.
1:LinkedList提供了4个不同位置的添加数据的方法,分别为链头插入,链尾插入,节点前插入,节点后插入
2:由于LinkedList是双向链表,在查询数据方面提供了“从前往后”和“从后往前”两个查询方法
3:如果数据量大,删除频繁,只能用LinkedList。
特别注意:
list.get(i),...
第七周总结及Boostrap框架demo
本周总结:
这周其实80%的时间都花在做ppt上面....也不知道为什么,做ppt总是停不下来。但是这周还是很有收获的。
我发现一件事,ppt的动画 与css3 Js形成的动画,或者是视频中的一些动画 其实是有共通之处的。以前做ppt总是觉得灵感不够,创意不足。但是随着 接触很多的绚丽的网页或者有创意的视频可以提升自己对于动画的认知。简单的文...
一、iCloud云服务iCloud是苹果提供的云端服务,用户可以将通讯录、备忘录、邮件、照片、音乐、视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至即使你的设备丢失后在一台新的设备上也可以通过Apple ID登录同步。苹果已经将云端存储功能开放给开发者,可以存储两类数据:
key-value data:
分享小量的非关键配置数据到应用的多个实例,使用类似于NSUser...
24.JAVA编程思想——违例差错控制
Java 的基本原理就是“形式错误的代码不会运行”。
与C++类似,捕获错误最理想的是在编译期间,最好在试图运行程序以前。然而,并非所有错误都能在编译期间侦测到。有些问题必须在运行期间解决,让错误的缔结者通过一些手续向接收者传递一些适当的信息,使其知道该如何正确地处理遇到的问题。
在C++和其他早期语言中,可通过几种手续来达到这个目的。而且它们通常是作...
spring事务处理,核心类,编程式和声明式实现,事务体验...
笔试题目...
大二上学期分班前的总结
  不知不觉和大家一块生活、学习已经一年半了,时间过得很快,这时回想起,心中浮现的是极度的不舍。但现在我非常高兴的是咱们班的同学,现在的个性非常鲜明,在大一时都能找到自己感兴趣或者值得自己付出行动的事情,并去付诸实践。不像其他班或者其他院我接触的学生,虽然他们大一时早晚自习全勤、课堂出勤全都优秀,但是现在再看他们、看他们班,会发现学生在大一时没有找到自己的兴趣点,没有...
那些相见恨晚的android studio快捷键,使用android studio的那些奇技淫巧...
异步任务是为了在新线程中修改UI组件而提供的,当然为了解决这个问题我们还可以用Handler实现线程之间的通信。但异步任务为我们提供了一种进一步简化的方式。...
先说为什么需要Handler:
Android的主线程又叫UI线程,用于处理与UI相关的时间。Android只允许在主线程中修改UI组件,当我们在其他线程中需要修改UI界面时,就需要发送消息到主线程,再由主线程来处理UI的修改事件。
在UI线程中执行耗时操作或网络操作,否则会抛出ANR (“Application Not Responding”)异常或NetworkOnMainThreadExceptionwill异常。
在这些时候,我们用Handler来进行消息的传递和处理。...
引言本文仅关注一些常见的虚拟机内存监视手段,以及JVM运行时数据区各个部分内存溢出的发生和对应的解决方案,总体来说属于概括性总结,涉及相对不是很深入,目的是让自己和其它初学者有一个框架性、概念性的了解,当遇到问题时有迹可循、不至于不知所措。一、虚拟机内存监视手段虚拟机常出现的问题包括:内存泄露、内存溢出、频繁GC导致性能下降等,导致这些问题的原因可以通过下面虚拟机内存监视手段来进行分析,具体实施时...
1.同步器之CountDownLatch
类的名称的中文翻译为:倒数闩(倒数锁存器)。操作线程时,有时候我们希望这个线程进行等待,直到一定数量的事件发生之后为止。为了处理这种情况,并发API提供了CountDownLatch类,CountDownLatch在创建时指定要等待的时间的数量,在释放锁存器(闩)之前,必须发生指定数量的事件。每发生一个事件,计数器递减,当计数器减为0时,锁存器打开,等待...
上一篇已经提到,在virtio设备初始化的过程中,会通过setup_vp创建virtqueue,目前的virtqueue队列都是通过vring来实际工作的,我们可以把virtqueue当做一个接口类,而把vring_virtqueue当做这个接口的一个实现
* virtqueue - a queue to register buffers for sending or receivin...
Android Animation(动画设计)
Android的图形处理基础
Bitmap与BitmapFactory
Canvas,Paint,Path的绘图API
Matrix ,图像的几何变换
逐帧动画,补间动画,属性动画介绍
drawBitmapMesh扭曲图片,
Shader渲染图片
SurfaceView绘图机制...
博客频道公告
相关知识库
两天热门文章
博客最新评论
:加油!能否告知THU大神博客?
:同求demo 发邮箱 谢谢!
:@qq_:但是还是很好用的
:@qq_:主要是长得可怕
:不错,但是比较新欢utf-8
:你好请问可以提供那个txt文件吗?谢谢了!
:博主,怎么解决?
:嗯,写的很好,很详细 ! 但有个问题,如果include的不是mytopbar,而是一个ImageV...
:非常感谢楼主,成功了。就是不知道稳定不稳定了:)
:最后面的服务端忘了打印吧ps.println(line);
:文章很经典,收藏了。顶尖运动员总是走出舒适区,而普通运动员却只是尝试自己熟悉的,对我触动很大。谢谢博...
:这篇文章真是帮我大忙了!!!
:这段代码在编译的时候出现问题:error C4996: 'fopen': This function...
:项目1:当输入金额小于3500时,输出结果将不正常,扣1分;其他非常好,加油!
:你好,你现在知道怎么解决了吗c++编程设计,求在n×m的棋盘上放k颗皇后的放法(1≤k≤n,m)(皇后可以斜着吃棋)(保证互相_百度知道
c++编程设计,求在n×m的棋盘上放k颗皇后的放法(1≤k≤n,m)(皇后可以斜着吃棋)(保证互相
mc++编程设计:n,k输出,求在n×m的棋盘上放k颗皇后的放法(1≤k≤n,m)(皇后可以斜着吃棋)(保证互相不会吃)输入
我有更好的答案
这个内容我来写,肯定好,知道怎么做成
皇后走的格子没有限制
八皇后问题嘛~
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁leetcode:N-Queens (n皇后问题) [面试算法题]
题目:The n-queens puzzle is the problem of placing n queens on an n&n chessboard such that no two queens attack each other.
Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where 'Q' and '.' both indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
&[&.Q..&, &// Solution 1
& &..Q.&],
&[&..Q.&, &// Solution 2
n皇后问题,题意就是求n&n矩阵中,每行放一个棋子,使得棋子所在的列和两条斜线上没有其他棋子,枚举所有可能。
dfs去遍历,考虑所有可能,row中记录每一行棋子的位置,col记录当前列是否有棋子,对角线的判断就是两点行差值和列差值是否相同。
当dfs深度达到n时,就表示存在满足条件的解,把当前状态图存到结果中。
temp(n, '.')先把字符串全部赋值成 & . ' ,在吧存在棋子的位置改成&Q&
int row[1000];
int col[1000];
vector&vector&string& &
class Solution {
void dfs(int r,int n)
vector&string&
for(i=0;i&n;++i)
string temp(n,'.');
temp[row[i]]='Q';
go.push_back(temp);
result.push_back(go);
for(i=0;i&n;++i)
if(col[i]==0)
for(j=0;j&r;++j)
if(abs(j-r)==abs(i-row[j]))
dfs(r+1,n);
vector&vector&string& & solveNQueens(int n) {
result.clear();
blog.csdn.net/havenoidea
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'用c++编程:八皇后问题。在一个8×8的国际象棋盘,有八个皇后,每个皇后占一格;要求棋盘上放上八个_百度知道
用c++编程:八皇后问题。在一个8×8的国际象棋盘,有八个皇后,每个皇后占一格;要求棋盘上放上八个
每个皇后占一格,有八个皇后。在一个8×8的国际象棋盘:八皇后问题、列或对角线上。问有多少种不同的方法;要求棋盘上放上八个皇后时不会出现相互“攻击”的现象,即不能有两个皇后在同一行用c++编程
提问者采纳
输出这种布局
k++;/num &&/; cout &&&输出一种布局void print(int *p;
print(x;int x[9]; &&如果无解;&#47,int n){ 共有& - &/
cout &lt。\ Q &/ return 0;回溯 }}int main(){ nQueens(N),没解:\ i& /&lt, flag=1;//=n;=n; j++)
while( j&求解n皇后布局void nQueens(int n){ int k=1,回溯
k--;n&=n ){
/判断第k个皇后可否放在第x[k]列
j=flag=1;&;第k个皇后已经被放置到格子外了,j; j++)
cout && x[1]=0;统计解的个数/ j&转到下一行
while( x[k]&/ num &lt,N);&& /
j++;& /&第k个皇后仍被放置在格子内; /&const int N=8;/
if( x[k]&lt,有解
if( k==n ){
num++;; }}/; /p[i];/n&/
if( flag==1 ) / while( k&/ cout &=n ){
x[k]=0;0 ){
x[k]+=1;;; int j=1;种布局方法;可放
for(j=p[i]+1;八皇后问题#include & j&k && flag ){
if( x[j]==x[k] || (abs(x[j]-x[k])==abs(j-k)) )
flag=0; - &iostream&/&quot,最后一个皇后就会安排到格子外面去
x[k]+=1;转到下一行
}else &#47/ i++){
for(j=1;int num = 0;&lt
最后是有92种吗
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
为您推荐:
八皇后问题的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 棋盘游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信