随笔分类 -  Algorithm&DataStructure

欧几里德算法
摘要:欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:   定理:gcd(a,b) = gcd(b,a mod b)   证明:a可以表示成a = kb + r,则r = a mod b   假设d是a,b的一个公约数,则有   d|a, d|b,而r = a - kb,因此d|r   因此d是(b,a mod b)的公约数   假设d 是(b,a mod b... 阅读全文

posted @ 2010-05-27 13:54 寂寞的肥肉 阅读(241) 评论(0) 推荐(0)

求1-n之间所有不重复的可能的值的和等于m的组合
摘要:求1-n之间所有不重复的可能的值的和等于m的所有组合思路:采用二叉树结构,根节点为岗哨,无实际意义,从根节点开始,其左孩子节点表示选中1,有孩子节点表示不选中1,以此类推。从根节点开始遍历,若此节点的sum< M,则递归调用此节点,若sum>M,则return,若sum=M,则回溯所有的节点。具体代码如下:#include <stdio.h>#include <mal... 阅读全文

posted @ 2009-11-10 23:52 寂寞的肥肉 阅读(563) 评论(1) 推荐(0)

C语言实现快速排序
摘要:快速排序简介:即是一个递归的过程,比如对数组a[5] = {1,3,4,5,2}排序。首先找到一个指标元素,这里取(0+5)/2 = 2即中间的元素a[2];然后根据a[2]=4排序;比4小的放到左面,比4大的放到右边。a[5] = {1,3,2,4,5};然后分别对数组{1,3,2}和数组{5}进行同样的排序。递归到没法分割为止。C代码如下:#include <stdio.h>#de... 阅读全文

posted @ 2009-11-07 20:48 寂寞的肥肉 阅读(3789) 评论(0) 推荐(1)

导航