动态规划之求矩阵两点最短路线
来源:互联网 发布:手机淘宝装修与pc同步 编辑:程序博客网 时间:2024/06/05 04:16
给定M*N的矩阵,其中的每个元素都是整数。你的任务是从左上角走到右下角,请找出一条最合适的道路,使得在路上被选取的数字之和尽可能的小。
#include <iostream>#include <stack>#define Max 100#define INF 999999using namespace std;//矩阵网格的左上角到右下角,最短路线,动态规划int v[Max][Max];int a[Max][Max];stack <int> s;//保存路线int fun(int m,int n){//a[m][n]=min{a[m-1][n],a[m][n-1]},最优子结构if(a[m][n]>0)return a[m][n];if(m<0||n<0)return INF;int i=fun(m-1,n);int j=fun(m,n-1);if(i==INF&&j==INF){a[m][n]=v[m][n];return a[m][n];}a[m][n]=i<j?i:j;a[m][n]+=v[m][n];return a[m][n];}void main(){freopen("data.txt","r",stdin);int i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)cin>>v[i][j];cout<<"最短路线的长度是:"<<fun(3,3)<<endl;cout<<"路线是:"<<endl;int t1,t2,m=3,n=3;for(i=0;i<7;i++){t1=t2=INF;s.push(v[m][n]);if(m-1>=0)t1=a[m-1][n];if(n-1>=0)t2=a[m][n-1];if(t1<t2)m--;elsen--;}while(s.size()!=1){cout<<s.top()<<"->";s.pop();}cout<<s.top()<<endl;s.pop(); }
数据和结果如下:
-------2013-12-18 昨晚写了一会没搞出来,今晚重新整理了下思路,出来了。
0 0
- 动态规划之求矩阵两点最短路线
- dijkstra算法--求两点之的最短路径
- 02-【入门案例篇】The first Demo,求两点间的最短路线
- 动态规划之最短路径
- 动态规划算法计算网络的最长路线和最短路线
- 动态规划算法计算网络的最长路线和最短路线
- 动态规划算法计算网络的最长路线和最短路线
- 动态规划求有向无环图的最短路径
- 求任意大小矩阵两点之间的最短路径(回溯)
- 用动态规划优化老鼠走迷宫中的最短路线解法
- 动态规划 最短路径
- 动态规划 最短路径
- 最短路径 动态规划
- 最短路径(动态规划)
- 动态规划-最短排序
- 动态规划之Bellman-Ford最短路径
- 动态规划之最短路径浅解
- 动态规划之求最大子矩阵问题
- get file size
- Android:SQLite3的使用
- 用指针排序数组
- log4j 单文件、多文件简单配置使用
- 游戏引擎中的通用编程技术
- 动态规划之求矩阵两点最短路线
- Ext.view.View中itemSelector的作用
- 工业级国产曲线绘制工具CChart的主页开通
- 小心多任务设计被滥用
- Android4.3前后DNS解析简单研究
- ext4.2入门简单小例子(button的事件--对话框的几种使用情况)
- Java自学视频整理(持续更新中...)
- 一些算法的MapReduce实现——好友推荐
- php的扩展和嵌入--c++类的扩展开发