算法一之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 尽管随机运动可能完全不可预知,它还是相当无趣的,因为它完全是以 ...
随机推荐
- ASP php获取文件URL地址等方法
$_SERVER["HTTP_REFERER"] rss中可用 echo next(explode("=", $_SERVER["QUERY_STRI ...
- springMVC文件上传优化
1. 新建web project 2. 填 jar,注意新加入两个上传文件的jar, commons-io, commons-fileupload 3. 改写web.xml <?xml vers ...
- Xcode制作插件
转发至:https://onevcat.com/2013/02/xcode-plugin/ Xcode 4 插件制作入门 本文欢迎转载,但烦请保留此行出处信息:http://www.onevcat.c ...
- h2database. 官方文档
http://www.h2database.com/html/advanced.html http://www.h2database.com/html/tutorial.html#csv http:/ ...
- expect ------提供用户名和密码的SSH自动登录脚本
使用VPN,每次都要在Terminal上重复输入命令: ssh -D port user@host 出来密码提示符后,把复杂的密码拷贝下来,然后粘贴到Terminal,敲回车... 终于忍受不了这样的 ...
- label中添加图片
创建NSTextAttachment的对象,用来装在图片 将NSTextAttachment对象的image属性设置为想要使用的图片 设置NSTextAttachment对象bounds大小,也就是要 ...
- Android L(5.0)源码之手势识别OnTouchListener
在Activity中,因为要监听触摸屏的触摸事件和手势时间,所以该Activity必须实现OnTouchListener和OnGestureListener两个接口,并重写其中的方法.本人根据andr ...
- ios 简单的plist文件读写操作(Document和NSUserDefaults)
最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...
- 7 -- Spring的基本用法 -- 12...
7.12 Spring 3.0 提供的表达式语言(SpEL) Spring表达式语言(简称SpEL)是一种与JSP 2 的EL功能类似的表达式语言,它可以在运行时查询和操作对象图.支持方法调用和基本字 ...
- lua 函数
1.函数只有一个参数,且该参数为table 或 字符串时,调用函数可以省略() print"hello world" 同 print("hello world" ...