有向无环图中最长路(无权有向无环无回路图)动态规划初步!
来源:互联网 发布:java ftpclient linux 编辑:程序博客网 时间:2024/05/16 17:39
输入一个无权有向无环无回路图找到从给定点出发的最长路(使用动态规划)
使用一维数组记录在搜过程中的各个状态!并且巧妙利用各个状态参数输出最长路的路径。在数组中下标表示状态,而内容则存储从改点开始的最长路,并且通过递归一一后推。
#include<stdio.h> /*try_fei_ge*/#include<string.h>int dp[100],D[100][100];int max(int num1,int num2);int dr(int i,int n); /*动态规划找最长路*/void speak(int i,int n); /*输出最长路路径*/int main() {int a,v;memset(dp,0,sizeof(dp));printf("请输入顶点个数:"); scanf("%d",&a);printf("请输入无权有向无环无回路图领接矩阵:\n");for(int i=0;i<a;i++)for(int j=0;j<a;j++)scanf("%d",&D[i][j]);printf("从哪一点出发:");scanf("%d",&v);printf("%d\n",dr(v-1,a));speak(v-1,a); return 0;}int max(int num1,int num2){if(num1>num2)return num1;return num2;}int dr(int i,int n){if(dp[i])return dp[i]; /*如果该状态下的最长路已经找过则直接返回*/for(int j=0;j<n;j++) /*递推*/if(D[i][j])dp[i]=max(dp[i],dr(j,n)+1); /*状态转移至j点*/return dp[i]; /*返回最长路长度*/}void speak(int i,int n){printf("%d ",i+1);for(int j=0;j<n;j++) /*判断在j状态是否是i状态的下一状态是则j为下一点*/if(D[i][j]&&dp[i]==dp[j]+1)speak(j,n);}
0 0
- 有向无环图中最长路(无权有向无环无回路图)动态规划初步!
- 动态规划-有向无回路图中两点间最远距离
- 判断有向图回路
- 判断有向图回路
- 有向图欧拉回路
- 拓扑排序(判断有向图是否有回路)
- 拓扑排序(判断有向图是否有回路)
- 拓扑排序(判断有向图是否有回路)
- 动态规划解——有向图中的最长路径
- 动态规划解——有向图中的最长路径
- 动态规划解——有向图中的最长路径
- 动态规划解——有向图中的最长路径
- 动态规划解——有向图中的最长路径 【转载】
- C++之求有向无环图的最长路径(拓扑排序+动态规划)
- C++之求有向无环图的最长路径(拓扑排序+动态规划)
- 无权图(有向或者无向)的 创建 插入边 删除边
- 有向无环图最长路
- 有向无环图求最长路
- SurfaceView的标准写法
- CH12,p218,验证码,注意点击刷新功能
- Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结
- 第六届蓝桥杯【省赛试题10】生命之树 ( 树形DP )
- 导入项目时左边出现红色感叹号
- 有向无环图中最长路(无权有向无环无回路图)动态规划初步!
- ETL简介
- SharePoint 2013: A feature with ID has already been installed in this farm
- PCI MSI parse in ACPI
- C++ 动态调用DLL
- HTML5--应用程序缓存
- jQuery插件superslide.js源码片段分析记录
- 真假正负例、混淆矩阵、ROC曲线、召回率、准确率、F值、AP
- weblogic javax/xml/namespace/QName报错