算法入门经典 7.4.4 带宽问题 回溯 剪枝
来源:互联网 发布:linux kernel启动参数 编辑:程序博客网 时间:2024/06/06 14:13
#include <stdio.h>#include <string.h>#define maxn 10struct graph{int adj[maxn][maxn];int vex;}g;int vis[maxn];int deg[maxn];int perm[maxn];int bestperm[maxn];int bestw = maxn, maxw = -1;void search_width(int cur){int i;if(cur >= g.vex){if(maxw < bestw){for(i = 0; i < g.vex; ++i)bestperm[i] = perm[i];bestw = maxw;}return;}for(i = 0; i < g.vex; ++i){if(!vis[i]){int tmp = maxw;vis[i] = 1;perm[cur] = i; int k, left = deg[i]; for(k = 0; k < cur; ++k) if(g.adj[i][k]){ if(cur - k > maxw)maxw = cur - k; if(maxw < bestw) --left; else break; }if(maxw < bestw){if(left < bestw){search_width(cur+1);}}vis[i] = 0;maxw = tmp;}}}int main(){int i, j;memset(vis, 0, sizeof(vis));memset(deg, 0, sizeof(deg));scanf("%d", &g.vex);for(i = 0; i < g.vex; ++i)for(j = 0; j < g.vex; ++j){scanf("%d", &g.adj[i][j]);deg[i] += g.adj[i][j];}search_width(0);for(i = 0; i < g.vex; ++i)printf("%d ", bestperm[i]);printf("\n%d\n", bestw);return 0;}
0 0
- 算法入门经典 7.4.4 带宽问题 回溯 剪枝
- 带宽问题; 回溯法+剪枝的巅峰杰作;算法经典入门;
- 【算法入门经典】7.4回溯法【八皇后问题】
- 算法入门经典7.4回溯法
- 《算法竞赛入门经典》7.4回溯法
- 回溯法--《算法入门经典》
- 【算法学习笔记】16.暴力求解法04 回溯法03 剪枝法 带宽
- 经典问题的回溯算法
- 【算法入门经典】 回溯法排列组合
- 算法:连续邮资问题(回溯+动态规划+剪枝)
- 【经典算法问题】马的遍历【回溯】
- 经典回溯算法之N皇后问题
- 经典回溯算法(八皇后问题)
- 八皇后问题(经典回溯算法)
- 回溯经典算法之四皇后问题
- 经典回溯算法之n皇后问题
- 八皇后问题(经典回溯算法)
- 算法竞赛入门-回溯-7.4.1-八皇后问题
- IOS 7 SDK Multitasking 多任务
- myeclipse开发基于cxf的webservice
- QMYSQL3: Unable to bind value
- android调试的必杀技——反汇编
- LeetCode(54) SpiralMatrix
- 算法入门经典 7.4.4 带宽问题 回溯 剪枝
- 九度OJ 1499 项目安排 -- 动态规划
- QT中三种数据类型之间的转换:
- Python中一些内置函数
- 有一段文本,将文本中的所有单词存放到一个字符串数组中
- <context-param>与<init-param>的区别与作用
- class.getResource()的用法
- 资料
- uva 10152 - ShellSort