
data structures & algorithm
灯笼小子
这个作者很懒,什么都没留下…
展开
-
排列组合数生成算法
/*从1,2,3,...n个数中,选m个数进行排列组合,输出所有情况实现方式采用递归,深度搜索*/#includeusing namespace std;#define MAXN 30int a[MAXN];int temp[MAXN];int tag[MAXN]={0};int n,m;void permutation(int n, int m, int lev)//排列原创 2013-09-04 22:40:39 · 1947 阅读 · 1 评论 -
二叉树非递归前序,中序,后序,层次遍历
这个说明网上非常多,就直接上代码了。#include #include #include #include using namespace std;struct BinaryTreeNode{ int value; BinaryTreeNode * left; BinaryTreeNode * right;};//增加节点void addNode(Bin原创 2013-08-20 20:25:54 · 926 阅读 · 0 评论 -
大数加减乘除
参考《ACM/ICPC程序设计与分析》 清华大学版#include using namespace std;#define MAXLEN 255int* str2int(char* str){ int len = strlen(str), i; int * a = new int[len*sizeof(int)]; for(i=0; i<len; ++i) a[i] = (原创 2013-08-30 16:00:57 · 850 阅读 · 0 评论 -
动态规划DP原理
摘自《ACM/ICPC承租设计与分析》 沈云付 编著 清华大学出版社一、动态规划的基本思想动态规划:动态规划就是在多阶段决策问题中,各阶段采取的决策依赖于目前状态,并引起状态的转移,以期求得最优化的过程。动态规划中当前阶段的状态依赖于上一阶段和上一阶段的决策结果。状态转移方程:第k阶段的状态Sk和本阶段的决策Dk确定第k+1阶段的状态Sk转载 2013-09-06 21:00:11 · 1244 阅读 · 0 评论 -
通信团体问题-非递归回溯
/*通信团体问题: 有一家通信公司近来要推出一项优惠活动,凡是在某个群体中相互通话的用户可以得到某种通话费折扣优惠。A、B两个用户相互通话是指其中之一(如A)与另一个人(如B)打过电话,而不必要求B打电话给A。 一个群体G要满足通讯公司的优惠政策,必须满足两个条件: ① G中任何两个用户通过话; ② G是团体,即如在加一个G外的人进去,所得新群体是不满足条件①的。 该通原创 2013-09-11 15:01:54 · 723 阅读 · 0 评论