算法一之N皇后问题
(写这篇文章主要是明天就要考试了,算法考试,今天不想再复习了,xiang着今天也开通了博客,于是在这个平台上进行复习,应该会更高效。最后祝愿我明天考个好成绩。嘻嘻。。。)
n皇后问题,主要是应用到回溯法。首先选取一条路径进行计算,如果不满足条件则,进行回溯,选择另外的路径进行计算。
我觉得回溯法:就想是在走迷宫,先选取一条路进行走,如果不能走通,就返回,在选择路口的地方,选择其他的路口,如果能走通,就说明路径选择正确。也就是说找到了解决问题的方法。
下面进行代码分析与解决:
问题分析,n皇后问题,问题分析不用说了,主要是进行伪代码的分析与求解。不同行,不同列,不在同一斜线上。
应用到SPARKS 语言
(1)判断一个地方是否可以放置一个皇后
procedure PLACE(k)
global X(k);integer i,k;//X(l)放置皇后的数列,下标是皇后放置的行,X(i)是皇后放置的列
i<-1;
for i<k do
if X(i)=X(k) or ABS(i-k)=ABS(X(i)-X(k))//判断第k个皇后与前面的k-1个皇后是否冲突。ABS:是判断是否在同一斜线上。
then return (false)
endif
i<-i+1;
repeat
return (true);
end PLACE
(2)n皇后问题的解决
procedure NQUEENS(n)
global k,n,X(1:n)//k是当前行,X(k)是当前列
X(1)<-0;K<-1;
while k>0 do//对所有行进行如下操作
X(k)<-X(k)+1//移到下一列
while X(k)<=n and not PLACE(k) do//如果当前位置不能放移到下一列
X(k)<-X(k)+1
repeat
//当前位置能进行放置
if X(k)<=n//当前列必须满足小于n
then if k=n //判断是否为一个完整的解。
then print(X)//是,输出解
else k<-k+1,X(k)<-0;//否,移动到下一行,列从头开始
endif
else k<-k-1//不满足,说明这样不能满足解。所以进行回溯。
endif
repeat
end NQUEENS
···············································································································
好了,一个问题已经解决了。下面在回顾一下。
这个问题理解了也不是那么麻烦。明天考试要注意的地方有哪些呢?
一条路走到底,碰到南墙回头,找到另外的路径。
最后明天考个好成绩。进行下一算法的分析计算。加油!!!!
算法一之N皇后问题的更多相关文章
- 加密算法 - RSA算法一
RSA算法原理(一) 声明: 本文转自 -- 作者: 阮一峰 (http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html) ...
- 决策树之Cart算法一
Contents 1. CART算法的认识 2. CART算法的原理 3. CART算法的实现 1. CART算法的认识 Classification And Regression ...
- Solr相似度算法一:Lucene TF-IDF 相关性算分公式
Lucene在进行关键词查询的时候,默认用TF-IDF算法来计算关键词和文档的相关性,用这个数据排序 TF:词频,IDF:逆向文档频率,TF-IDF是一种统计方法,或者被称为向量空间模型,名字听起来很 ...
- PCB 板边倒圆角的实现方法(基本算法一)
PCB外形是直角时外形时,通常工程制作时,外是直角或尖角的地方倒圆角,主要是为了防止板边容易划伤板且容易扎伤人 所以当客户没有特殊要求时,PCB外形是直角时一般会默认倒角0.5mm圆角(如下图所示) ...
- Java数组相关算法一
一.数组反转 1.方法一:创建新数组 int[] arr = {6,29,0,4,3}; int[] arr2 = new int[arr.length]; for (int i = 0; i < ...
- 决策树算法一:hunt算法,信息增益(ID3)
决策树入门 决策树是分类算法中最重要的算法,重点 决策树算法在电信营业中怎么工作? 这个工人也是流失的,在外网转移比处虽然没有特征来判断,但是在此节点处流失率有三个分支概率更大 为什么叫决策树? 因为 ...
- 人脸识别经典算法一:特征脸方法(Eigenface)
这篇文章是撸主要介绍人脸识别经典方法的第一篇,后续会有其他方法更新.特征脸方法基本是将人脸识别推向真正可用的第一种方法,了解一下还是很有必要的.特征脸用到的理论基础PCA在另一篇博客里:特征脸(Eig ...
- 机器学习算法一:K-近邻算法
最近在<机器学习实战>里学习了一些基本的算法,对于一个纯新手我也在网上找了写资料,下面就我在书上所看的加上在其他博客上的内容做一个总结,博客请参照http://www.cnblogs.co ...
- Unity人工智能学习—确定性AI算法之追踪算法一
转自http://blog.csdn.net/zhangxiao13627093203/article/details/47451063 尽管随机运动可能完全不可预知,它还是相当无趣的,因为它完全是以 ...
随机推荐
- mysql 本地操作
先把数据库传到根目录 再直接导入 没有50M限制root@b101 [/home/user/www]# mysql -uusername_007li -ppasswd -D dbname_li12d ...
- Zencart 500错误查找和解决方法
有时在一些虚拟主机下(如HostMonster,BlueHost),Zencart网站会莫名奇妙输出空白页面,查看HTTP头,其实可以看到是500错误.至于500错误的出现原因,一般是由于服务器脚本或 ...
- mysql中变量character_set_connection的具体作用
如题.通常的使用中,character_set_client,character_set_connection这两个变量的值是一样的,也就是说查询不需要进行编码转换.这样看来变量character_s ...
- 向datagridview 添加行
datagridview 已经绑定数据源且控件的AllowUserToAddRows设置为false时. ((DataTable)dataGridView1.DataSource).Rows.Add( ...
- The 2014 ACM-ICPC Asia Regional Anshan Online
[A]无向图的双联通子图计数.DP+状态压缩 [B]计算几何(点的旋转) [C]DP+状态压缩 [D]离散数学+DP (感觉可出) [E]概率DP [F]LCT模板题(-_-///LCT是啥!!!!) ...
- 手机web——自适应网页设计(html/css控制) - 51CTO.COM
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- 【python】matplotlib在windows下安装
昨晚装了好久的这玩意,终于在凌晨成功搞定,然后跑起了一个人人网抓取好友关系的脚本~开心. 以下是我参考的最给力的文档,全部安装一遍,就可以啦~ 但是!在安装前一定要先确认自己的python版本!本人自 ...
- coreGraphs和动画
http://www.jianshu.com/p/b71c3d450e8e http://blog.csdn.net/volcan1987/article/details/9969455 http:/ ...
- STM32 PWM波
利用STM32产生占空比可以调节的PWM波 科普:pwm(Pulse Width Modulation)脉宽调制 关于pwm波的产生:1.首先来看一下代码: pwm波模式的相关配置(利用的是定时器TI ...
- 查看Linux最近重启的时间
最近实验室老是掉电,想查看服务器什么时候重启的,于是在网上找了一些资料.有两种方式可以查看服务器重启. (1) who -b (2) last reboot |head -1