算法
woshioosm
这个作者很懒,什么都没留下…
展开
-
最大子序列求解 分治法和动态规划
方法一:采用分治法求解 分为三种状况 将序列递归的二分 而最大值位于三种可能的位置 一是完全位于左边 二是完全位于右边 三是横跨左右代码如下int maxSubSum(int *A ,int left,int right){ int maxLeftSum=0; int maxRightSum=0; int leftBorderSum=0; int rightBorde原创 2012-03-08 17:11:30 · 1386 阅读 · 0 评论 -
各种经典排序算法汇总( 亲测调试运算通过)
这几天好好学习了一下排序算法 查看了各种书籍和网络资源 挑着简单易懂的教程好好学习了一下 基本上算是过了一遍 之后几天 对排序算法好好地总结一下 整理一下,先把要整理的算法列举一下:1,选择排序对于一个a[0,n]的数组,依次遍历数组,每次选出最大或最小的一个数void selectSort(int *a,int size){ int min; for(int i=0;原创 2012-03-18 22:52:18 · 2301 阅读 · 1 评论 -
KMP算法学习总结
今天看了不少关于KMP算法的东东 读了好几篇别人写的博客 零零碎碎的算是大体明白是个怎么回事儿了 现在好好把别人的东西 整理整理 部分是转载的哦!KMP算法核心:1、KMP算法借助于一个辅助数组next来确定当匹配过程中出现不等时,模式P右移的位置和开始比较的位置。2、next[i]的取值只与模式P本身的前i+1项有关,而与目标T无关。3、匹配过程中遇到Pi不等于Tj时,若ne原创 2012-05-04 20:55:51 · 1042 阅读 · 0 评论 -
统计一个数 二进制表达式 1的个数
int func(int x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;}如何只数'1'的个数?如果一个数字至少包含一个'1'位,那么这个数字减1将从最低位开始依次向高位借位,直到遇到第一个不为'0'的位。依次借位使得经过的位由原来的'0'变为'1',而第一个遇到的那个'转载 2012-05-01 22:20:11 · 799 阅读 · 0 评论 -
很特别的一个动态规划入门教程
很特别的一个动态规划入门教程今天在网上看到一个讲动态规划的文章,是以01背包为例的,这文章和书上的讲解非常不一样,令我眼前一亮,于是转载一下下~~~(说明一下,本人非常痛恨教材公式定理漫天飞,实际的讲解却讲得非常枯涩难懂,这种中国式的教育已经延绵了几千年了,现在中国的教材还是这个样子,讲清楚些明白些就那么难么?高中有个老师讲的一句话一直觉得很有道理:“教得会天才不是真本事,能把转载 2012-04-08 21:44:08 · 113630 阅读 · 51 评论 -
利用栈将中缀表达式转换成后缀表达式
目的:将中缀表达式(即标准形式的表达式)转换为后缀式。例子:a+b*c+(d*e+f)*g转换成abc*+de*f+g*+ 转换原则:1.当读到一个操作数时,立即将它放到输出中。操作符则不立即输出,放入栈中。遇到左圆括号也推入栈中。2.如果遇到一个右括号,那么就将栈元素弹出,将符号写出直到遇到一个对应的左括号。但是这个左括号只被弹出,并不输出。3.在转载 2015-01-28 15:00:41 · 2239 阅读 · 0 评论