今天讲背包问题的最后一种解法,递归解法,这种解法也是目前算法教材上讲的基本解法之一,如果你有一本关于这类算法的书籍,一般都可以找到你想要的算法,背包问题具体是什么,大家可以参考我的以前的文章,可以直接到下面的相关链接里面找到,我在最近发布关于背包问题的基本解法,动态规划解法,回溯解法,大家可以直接参照我的页面链接,如果具体还有问题不懂的话,也非常欢迎大家留言
好的,讲一讲递归算法,我提供的算法是使用了有效重量,最大可用价值作为递归参数逐个测试物件的重量和价值,直到找到最佳的侯返回,请注意,这里我设置的条件是只要满足背包可以放就可以,并不是贪心算法,请注意区别。
Read more…
今天继续背包问题相关解法,主要内容:动态规划
想到这个解法是想到了前几天的一道软考软件设计师考试的下午算法考题,我是参加者,内容大概如下:通常每种食物往往有不同的营养价值,顾客往往需要一种算法实现用最少的花费获得最高的营养价值,(食物不重复),现在要求在花费N元钱获得最大营养价值
分析:相信求解的原理不用说了,背包问题,软考的题录使用的是动规算法,跟今天的主题相关,那我们看下面的代码吧。
本题动规解法的原理:由于客户选择不同的食物会产生不同的营养结果,因此我们需要动态绑定两者之间的价格和营养价值总和和关系,建立一个关联数组,这样的话每一种价格花费会产生不同结果,我们再进行大小筛选,就是在已有的选择的前提下再增加一定价格的食物,如果相加之后超出则排除,或者相加它的营养价值之后小于相加一种更价格便宜的食物的话也排除,这样可以求出每一个价位的食品的最大营养价值,然后根据要求输出某一价位的结果
Read more…
今天考试的题目是记不得了,等题目公开了再给大家分析,今天讲点经典的算法,求质数,相信很多人还是记得当年的穷举法了吧,就是不断的让每一个数除以一个小于他的数最大到sqrt(N),然后得出结果,算法时间复杂度O(N^2),优化过的算法O(N * sqrt(N)),经典的算法我就不讲了,初学者如果不懂的话,可以留言,或者跟我联系
Read more…
今天继续昨天的话题,字符串匹配算法之BM算法,BM可以说是继KMP算法之后更加优秀的字符串匹配算了,BM 是大师Boyer-Moore的算法杰作, 所以称BM算法,相比KMP算法效率提高了不少,在空间上BM算法需要一个跟匹配字符集相同的辅助空间,已存放不同的匹配字符,比KMP要浪费不少,但是这也是BM的特色,可以在不同的字符集使用,两个字符集的话那就放一个字符集同大小的辅助空间就好,最复杂字符就很好了,目前大部分的高级语言比如C#都使用了BM及其改进算法(AC-BM算法),相比KMP匹配两个中文字符出现的半角结果而言,我还是偏好BM ,虽然浪费空间,但是,实现接近低于线性的消耗,少了一个n以上的的匹配时间,这点也是客观的
Read more…
[算法]数据结构中关于货郎担路径问题的常用解法,边界路径问题相信诸位学习过高级算法数据结构的朋友肯定是知道“货郎担问题”是很经典的图算法问题货郎担问题可以总结出4种不同的解法,主要有回溯、贪心、动态规划以下提供的算法是使用的动态规划方法,结合边界路径问题提出的算法C语言实现,调试TC平台,动规算法
代码:
Read more…
两款C语言编写的学生信息成绩管理系统,以前上C语言实习课编写源程序,时间记不得了现提供给初学者使用。
要求:学生信息或者成绩进行管理的系统,要求有新建、增加、删除、修改、排序功能C语言或者C++编写,自己定义数据结构,使用模块化编程,要求使用链表或者数组进行操作实习
学生信息成绩管理系统1 完整程序源代码(下载地址)右击另存
说明:使用链表作为主要的数据结构使用,可以求出学生的总分跟个人的成绩排名,要求单独每个学生的输入学生的学好和成绩。
Read more…
Recent Comments