社区
C语言
帖子详情
算法PK系列(2)-- 八皇后变种
r11222
2010-03-17 03:05:12
大家都知道,八皇后是把 8 个皇后放在 8*8 的棋盘
现在的问题变成,N个 (N<=8) 皇后,放入8*8的棋盘,输出所有可能的方法!(就是所有皇后不能互相攻击,不清楚规制的请百度)
例如
N=2,
就是两个皇后放在8*8 的棋盘,输出 所有可能
最重要是高效! 高效!!高效!!!!!!!!
大家都来发表意见吧,哈哈!!
分数不多,惭愧了
...全文
214
15
打赏
收藏
算法PK系列(2)-- 八皇后变种
大家都知道,八皇后是把 8 个皇后放在 8*8 的棋盘 现在的问题变成,N个 (N<=8) 皇后,放入8*8的棋盘,输出所有可能的方法!(就是所有皇后不能互相攻击,不清楚规制的请百度) 例如 N=2, 就是两个皇后放在8*8 的棋盘,输出 所有可能 最重要是高效! 高效!!高效!!!!!!!! 大家都来发表意见吧,哈哈!! 分数不多,惭愧了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
super_chris
2010-04-03
打赏
举报
回复
如果N<8,
那么每一层除了在本层选择一个位置外,还有一个选择就是空出本层。
其它一如N=8的情况。
LZ不知我说的对否?
r11222
2010-03-23
打赏
举报
回复
唉。还是靠自己解决了。结贴、、、
r11222
2010-03-23
打赏
举报
回复
顶。。。。。。。
。
。。
。。。
r11222
2010-03-23
打赏
举报
回复
[Quote=引用 11 楼 mlee79 的回复:]
偶所知的现在最快的:
http://www.jsomers.com/nqueen_demo/nqueens.html
[/Quote]
这个不是我想要的,你的是N个皇后放在N*N表格
我想要的是N个皇后,放在8*8表格(N<8)
跪求
mLee79
2010-03-17
打赏
举报
回复
偶所知的现在最快的:
http://www.jsomers.com/nqueen_demo/nqueens.html
taodm
2010-03-17
打赏
举报
回复
因为8皇后改N皇后就应该是一、二行的改动量。
如果改不了,表明你对8皇后还掌握不够。
r11222
2010-03-17
打赏
举报
回复
顶.…为什么没人回答呢???
r11222
2010-03-17
打赏
举报
回复
跪求答案,说说你的想法,或者告诉我怎样修改八皇后的算法从而得到 N皇后的算法
SWJTUli
2010-03-17
打赏
举报
回复
显然不行
r11222
2010-03-17
打赏
举报
回复
[Quote=引用 5 楼 zyqde_0802 的回复:]
define 一个N值,把8改为N应该就行了吧
[/Quote]
这样不行的
zyqde_0802
2010-03-17
打赏
举报
回复
define 一个N值,把8改为N应该就行了吧
r11222
2010-03-17
打赏
举报
回复
我不是要八皇后啊...我会八皇后啊,我要是N皇后,随意的皇后数,嘻嘻。。。。
zyqde_0802
2010-03-17
打赏
举报
回复
//八皇后问题的实现
#include <iostream>
#include <conio.h>
using namespace std;
unsigned int sysSum=0;
//QueenChess类声明
class QueenChess
{
public:
QueenChess();
void Solve(); //求解八皇后问题,并给出放置成功的棋盘总个数
bool SafeJudge(int row,int col)const; //判断位置(row,col)是否安全
void PlaceQueen(int row); //在第row行放置一个皇后
private:
int chessState[8][8]; //用于存放棋盘状态
int sum; //八个皇后放置成功的棋盘解的总个数
};
QueenChess::QueenChess()
{
sum=0;
int i=0,j=0;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
chessState[i][j]=0;
sysSum++;
}
sysSum++;
}
}
//求解八皇后问题能放置成功的棋盘总个数
void QueenChess::Solve()
{
//从第0行开始放置皇后
PlaceQueen(0);
cout<<"八皇后问题总共的解的个数是:"<<sum;
cout<<endl;
}
//在第row行的各列放置皇后
void QueenChess::PlaceQueen(int row)
{
for(int col=0;col<8;col++)
{
if(SafeJudge(row,col))
{
chessState[row][col]=1;
if(row<7)
PlaceQueen(row+1);
else
{
sum++;
}
}
sysSum++;
}
int i=0;
for(i=0;i<8;i++)
{
chessState[row][i]=0;
sysSum++;
}
}
//判断是否(row,col)是安全位置
bool QueenChess::SafeJudge(int row,int col)const
{
int qRow,qCol;
int i;
//检查前面各行,看与前面的皇后是否发生冲突
for(qRow=0;qRow<row;qRow++)
{
for(i=0;i<8;i++)
{
if(chessState[qRow][i]==1)
{
qCol=i;
//break;
}
sysSum++;
}
//如果两个皇后在同一行、同一列或两条对角线上,则说明该位置不安全
if(qRow==row||qCol==col||(qCol-qRow)==(col-row)||(qCol+qRow)==(col+row))
return false;
sysSum++;
}
return true;
}
效率不高,抛砖引玉了
int main()
{
QueenChess chess;
chess.Solve();
printf("%d\n",sysSum);
getch();
return 0;
}
hch2205
2010-03-17
打赏
举报
回复
很多书上都有八皇后的算法
ypb362148418
2010-03-17
打赏
举报
回复
编程之美上好像有八皇后的算法,找找看吧
数据结构与
算法
之
算法
篇
文章目录大O
算法
时间复杂度空间复杂度 大O
算法
时间复杂度 在长度为n的数组中: 直接通过下标去访问元素,时间复杂度为O(1)。 需要遍历查找元素的时候,时间复杂度为O(n)。 需要遍历二维数组的时候,时间复杂度为O(n²)。 时间复杂度,在代码编程中指的是要测量的代码在运行中会执行多少个步骤。步骤越少,肯定执行的效率越高。用一些
算法
函数来表示,它定性描述该
算法
的运行时间。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。相同大小的不同输入值仍可能造成
算法
的运行时间不同,因此我们通常使用
算法
的
【LeetCode刷题日记】常用
算法
基础和理解及运用
文章目录递归和迭代递归迭代迭代和递归的关系和区别(敲黑板)二分法典型的二分法二分法的
变种
找出第一个与key相等的元素的位置找出最后一个与key相等的元素的位置查找第一个等于或者大于Key的元素的位置查找第一个大于key的元素的位置查找最后一个等于或者小于key的元素的位置查找最后一个小于key的元素的位置二分法总结容易出错的地方1:终止条件容易出错的地方2:high的取值判断容易出错的地方3:low的取值判断双指针法(尺取法)**一、快慢指针的常见
算法
****二、左右指针的常用
算法
**滑动窗口209 长度最
算法
设计与实现小结
算法
设计主要讲了什么? 1. 基础的排序包含插入、冒泡、快排等。(提供给他自己会的信息) 2. 编程思想: a. 分治法 b. 动态规划 c. 贪心 d. 回溯(不会) e. 分支界限(不会) 插入实现: 维护一个有序数组或是一个有序链表。插的时候按顺序。 冒泡实现: 两层循环,内层遍历时将一个最大的放置尾部,外层
写在前面-数据结构与
算法
分析
没有用的前言 复习了有一段时间了。最近在看前端的东西。js红宝书马上就翻完了,vue文档也又再翻了一遍,基本用法没有太大变化,但还是增删了一些东西。现在回过头来,开始调优自己的代码风格,毕竟以前只顾自己写的开心,代码风格实在是很丑的。前端部分等过段时间整理好了一起做个总结。这两天开始翻数据结构和
算法
,这里写一下大概的复习计划。 为什么要学
算法
其实严格来讲,解决问题的方法,基本都会涉及
算法
。但是我们讲
算法
,其实很多时候是追求更高的目标。学习之前,我们会达成一些共识。 1.计算机资源是有限的。包括时间
【LeetCode刷题日记】常用
算法
基础和理解及运用_cw(->;a^ ^";f
left = m+1;下面是一个测试的例子:return 0;最后输出结果是:很多的时候,应用二分检索的地方都不是直接的查找和key相等的元素,而是使用上面提到的二分检索的各个
变种
,熟练掌握了这些
变种
,当你再次使用二分检索的检索的时候就会感觉的更加的得心应手了。二分法的代码中是存在非常多的细节的,一不小心,我们写出来的二分法就会存在bug。
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章