算法设计与分析
Flora_M
这个作者很懒,什么都没留下…
展开
-
图的搜索算法
1、ZOJ1002-Fire Net 放置碉堡的深度优先搜索算法 //回溯算法,子集树 void solve(int k, int current) { int x, y; if(k == n*n) //整个地图判断完毕 { //更新最优解 if(current > iBest) {iBest = current; return;} } els...原创 2019-11-11 11:14:53 · 353 阅读 · 0 评论 -
分支限界算法
1、装载问题 int MaxLoading() { queue<int> Q; Q.push(-1); int i = 0; int Ew = 0; int bestw = 0; int r = 0; for(int j=1; j<n; j++) r += w[j]; //搜索子空间树 while (true) { //检查左子树 int wt ...原创 2019-11-11 11:03:59 · 156 阅读 · 0 评论 -
回溯算法
1、装载问题 //形参表示搜索第t层结点 void Backtrack(int t) { //到达叶子结点 if(t>n) { //更新最优解 if(cw>bestw) { for(int i=1; i<=n; i++) bestx[i] = x[i]; bestw = cw; } ...原创 2019-11-11 10:41:09 · 179 阅读 · 0 评论 -
贪心算法
1、活动安排问题 //形参数组b用来记录被选中的活动 void GreedySelector(int n, action a[], bool b[]) { b[1] = true; //第1个活动是必选的 //记录最近一次加入到集合b中的活动 int preEnd = 1; for(int i=2; i<=n; i++) if (a[i].s>=a[p...原创 2019-11-10 22:30:45 · 214 阅读 · 0 评论 -
动态规划
1、矩阵连乘积问题 void MatrixChain (int n) { for(int i=1; i<=n; i++) m[i][i]=0; for(int r=2; r<=n; r++) { for(int i=1; i<=n-r+1; i++) { int j=i+r-1; ...原创 2019-11-10 22:12:13 · 208 阅读 · 0 评论 -
递归与分治策略
1、全排列问题 //产生从元素k~m的全排列,作为前k-1个元素的后缀 void Perm(int list[],int k,int m) { if(k==m) { for(int i=0; i<=m; i++) cout<<list[i]<<""; cout<<endl; ...原创 2019-11-10 17:39:48 · 190 阅读 · 0 评论