algorithm|算法比较分析实现
codingkid
这个作者很懒,什么都没留下…
展开
-
递归运算实现指数运算
#include using namespace std;int fun(int var,int exp);int main(){ int var,exp; cout<<"input..."<<endl; cin>>var>>exp; cout<<"result="<<fun(var,exp)<<endl; return 0原创 2010-08-07 10:57:00 · 1389 阅读 · 0 评论 -
前/中/后缀表达式的转换
自然表达式转换为前/中/后缀表达式,其实是很简单的。首先将自然表达式按照优先级顺序,构造出与表达式相对应的二叉树,然后对二叉树进行前/中/后缀遍历,即得到前/中/后缀表达式。 举例说明将自然表达式转换成二叉树: a×(b+c)-d ① 根据表达式的优先级顺序,首先计算(b+c),形成二叉树 ②然后是a×(b+c),在写时注转载 2011-11-04 22:06:20 · 870 阅读 · 0 评论 -
n阶方格的走法
问题描述:有一个n*n的方格,从左上角走到右下角有多少种最短路径的走法? 分析:若不加最短路径则n^(n-1)种走法。加上了最短路径就是说横向的距离为n-1,纵向的距离为n-1.总共的距离是2(n-1)步走到。解法:c(n-1,2(n-1))。组合问题。 分析:画图。a0'''''''1''''''11'''''''2''''''31''''''3'''''''原创 2011-11-10 15:03:20 · 5270 阅读 · 0 评论 -
倒水问题通用解法
无穷多的水,A和B升容器,想要得到C升得水。判断:有解条件为C%gcd(A,B)==0时。方法:min(A,B)一直往max(A,B)倒水,当B满时则倒出。 相当于一个n长度循环链表,每次步长为m去遍历这个链表,一定可以到达gcd(n,m)位置。原创 2011-11-12 22:05:18 · 1897 阅读 · 0 评论 -
统计一维数组中元素出现次数
之前ms面试题的算法设计被问了这个。也许这就是“挂面”的原因。反省自己的浮躁,还有更优的解法。最近看chord收到二分查找的启发,其实可以这样设计算法的:首先对数组排序,时间复杂度O(NlogN)。之后变成了abbc……这样有序形式,接着用变形的二分查找,定位同一个元素出现的范围。比如说第一个b的下标是1,那么二分范围是1~(len-1),每一次根据end是否是b来划分区间(若原创 2011-12-19 19:28:03 · 3862 阅读 · 2 评论