今天再讲点跟N皇后有关的问题,骑士遍历问题,或者象棋中马的遍历问题,当然这里的马是国际象棋了,两者有着很多相似点,同时又有很多不同点,主要还是限制路径的区别,N皇后主要是自由放置只要满足条件就好,马的遍历则跟上下遍历的路径有关了,主要运用了图算法之深度广度遍历,以及图的建立等算法。
要求:实现棋盘上任意位置的一个棋子马,使它不重复的走过棋盘上的每一个棋盘格
分析:首先知道马在棋盘是怎么走的,根据国际象棋规则,马在一个起始位置共有8个可用的行动位置,当然边界方面需要另外考虑,我们的马的行走必须考虑这8种类可能性,排除不能使用的位置,走可用的位置,当8个位置不可以使用的时,需要考虑返回上一步,这点有点像图的广度优先遍历相同,当马走完所有位置,同时没有可用的位置用于行走的时候遍历结束。
Read more…
今天讲点比较高级的算法,目的也很简单,求质数,但是应用一种新的算法Miller-Rabin算法,这是一种利用了概率和费马小定理的算法设计,有点玄乎吧,其实本人也是刚接触这种算法,这是一种纯数学的解法,如果各位不懂,当学习一下数学也好啊好,我们往下讲
首先了解基本的数学知识,费马小定理:
若n是素数,则对所有1≤a≤n-1的整数a,有a^(n-1)mod n=1;
作者Fermat 很牛的数学家,在他在世的时候好像还没有计算机,不过今天我们要用这个定理来设计算法
分析这个定理可以知道,如果一个数是质数,那么它必定满足任意一个整数属于(1,n-1)范围有a^(n-1)mod n=1,不懂?我们取逆否命题试试看,就是只要存在在(1,n-1)范围中的整数a 使得a^(n-1)mod n=1不成立,那么这个数就不是素数,相信明白了吧,我们要确定一个数是否是素数,只要随机生成一系列的数a,如果这些数a使N满足费马小定理的话那么就可以认定它是素数了,当然有个前提,就是这个推导只能在计算机领域内使用就跟我上次讲的用哥德巴赫猜想优化一道算法题目一样,在计算机可以运算的数的范围内可用,请不要在其他科学领域类使用
Read more…
今天继续背包问题相关解法,主要内容:动态规划
想到这个解法是想到了前几天的一道软考软件设计师考试的下午算法考题,我是参加者,内容大概如下:通常每种食物往往有不同的营养价值,顾客往往需要一种算法实现用最少的花费获得最高的营养价值,(食物不重复),现在要求在花费N元钱获得最大营养价值
分析:相信求解的原理不用说了,背包问题,软考的题录使用的是动规算法,跟今天的主题相关,那我们看下面的代码吧。
本题动规解法的原理:由于客户选择不同的食物会产生不同的营养结果,因此我们需要动态绑定两者之间的价格和营养价值总和和关系,建立一个关联数组,这样的话每一种价格花费会产生不同结果,我们再进行大小筛选,就是在已有的选择的前提下再增加一定价格的食物,如果相加之后超出则排除,或者相加它的营养价值之后小于相加一种更价格便宜的食物的话也排除,这样可以求出每一个价位的食品的最大营养价值,然后根据要求输出某一价位的结果
Read more…
今天讲点比较枯燥的理论知识,关于C语言的安全指针,如果你习惯于用C语言,那么会知道C语言的指针操作是很不安全的,但是这反而是C语言的特色之一,同时增强了C语言的灵活性和高效性,我本人也是比较偏爱于C语言的,并不是C++或者其他语言在算法方面不行,而是C语言的算法表述更加易于理解和运行更加高效,往往专家编程或者高效编程会采用C或者它的发展C++,但是对于初学者来说,要正确运用好C尤其是它的指针确实比较困难,所以我在此讲解几种C安全指针的处理方法。但是在此说明,请保持良好的编程习惯和正确的C指针处理方法,本文只提供一些
Read more…
圣诞前夜讲点比较具有圣诞感觉的算法,背包问题算法,这里我写了经典算法和贪心算法两种解决方法,因为时间不多,所以给出的数组是已经排序的,因为贪心算法可能要用得到,经典算法因为是一个一个比较,因此排序也就没有那么重要了,可能两种算法的最终运行效果一样的,朋友们调试的时候记得修改我给出的测试数组,今天实在太忙了,贪心使用的排序算法没有写,留着以后给大家讲排序算法的时候使用吧,圣诞快乐,诸位朋友们。
背包问题:就是现在有一个容量为PSIZE的背包,同时又有N件item,现在要求将这些item放入这个背包里面去,要求尽量放一定要求的item(比如按照大小的顺序),又要求放最多的item或者放的item权值之和要最大
Read more…
首先大家祝福平安夜快乐啊,今天要发布的代码是一款C语言编写的模拟操作系统管理进程的程序调试环境TC,使用了PCB进行进程管理控制,建立三个基本的队列:等待、执行、阻塞进行模拟操作系统的进程管理,模拟进程的调度,模拟用户的创建、执行、阻塞、挂起、唤醒等操作
最近要准备准备操作系统考试,所以放一个程序跟大家分享
Read more…
常见wordpress安装,运行,使用出现500 internal error错误分析和解决方法
最近因为写了一篇博文,内容是关于我的一次WP故障情况的解决过程和分析,然后有放在wordpress.org.cn上,结果有很多朋友看过后还仍然有少部分朋友没能解决问题,在我的博客给我留言,在此我把我目前接触到的几种PHP 500 Error错误情况和处理方法跟大家分享,如果你用这些方法解决了问题,欢迎留言
首先解释下500 internal Error是个什么东西,翻译过来就是服务端系统内部错误,错误的编号500 ,产生的原因也有多种,大家不要觉得内部错误很可怕,其实很多情况只是服务器的安全措施而已,比如脚本解析错误或者其他的异常服务器也会出现500错误,并不是正真的服务器内部错误,本文主要说的也是这些相关的错误,我就曾经试过上传一个去掉分号的phpinfo() 结果直接500而不是PHP的错误号和提示让你检查是否丢失分号,如果你的主机是这种情况,那么以后的500错误应该是常事了
Read more…
Recent Comments