动态规划---三角矩阵最小路径
2016-08-21 22:03
302 查看
形如一下三角形,请给出从第一行到最后一行路径的最小值(每次只能从左下或者右下的路径)这是leetcode上的题目。在此做一个总结!!!
2
3 4
6 5 7
4 1 8 3
动态规划相关视频:http://v.youku.com/v_show/id_XODkxMDg0OTUy.html
9936
源程序如下:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n;
//int *dp;
vector<int> dp;
cin>>n;
vector<vector<int> >triangle(100,vector<int>(100,0));//100*100的二维数数组
//int triangle[100][100]={0};
int i=1;
int j=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
cin>>triangle[i][j];
}
}
cout<<triangle[4][4]<<endl;
dp=triangle
; //dp指向三角矩阵的第n行
for(i=n-1;i>=1;i--)
{
for(j=1;j<=i;j++)
dp[j]=min(dp[j+1],dp[j])+triangle[i][j];//dp[j]表示第i行j列的元素开始到最底层的路径(显然只有两条路--第i+1行j列/j+1列,然后再加上第i行j列的元素)
}
cout<<dp[1]<<endl;
return 0;
}
2
3 4
6 5 7
4 1 8 3
动态规划相关视频:http://v.youku.com/v_show/id_XODkxMDg0OTUy.html
9936
源程序如下:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int n;
//int *dp;
vector<int> dp;
cin>>n;
vector<vector<int> >triangle(100,vector<int>(100,0));//100*100的二维数数组
//int triangle[100][100]={0};
int i=1;
int j=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
cin>>triangle[i][j];
}
}
cout<<triangle[4][4]<<endl;
dp=triangle
; //dp指向三角矩阵的第n行
for(i=n-1;i>=1;i--)
{
for(j=1;j<=i;j++)
dp[j]=min(dp[j+1],dp[j])+triangle[i][j];//dp[j]表示第i行j列的元素开始到最底层的路径(显然只有两条路--第i+1行j列/j+1列,然后再加上第i行j列的元素)
}
cout<<dp[1]<<endl;
return 0;
}
相关文章推荐
- 利用动态规划,求数值矩阵左上角至右下角最小路径
- 动态规划-----矩阵最小路径和
- 动态规划--矩阵最小路径和
- 递归与动态规划---矩阵的最小路径和
- 动态规划-矩阵最小路径和
- 动态规划(三)暴力递归的优化之路——数字矩阵的最小路径和
- uvaoj 116 Unidirectional TSP 动态规划记录字典序最小路径
- 矩阵的最小路径和
- 矩阵从左上角到右下角的最优路径使得经过路径上的权值和最大(最小)
- 矩阵的最小路径和
- C++实现矩阵图的遍历·最小生成树(prim,kruskal)·最短路径(Dijkstra,floyd)
- 矩阵最小路径和(java实现)
- 矩阵的最小路径和 [DP]
- 动态规划3:矩阵最小路径和问题
- 矩阵中的最小路径
- LeetCode -- Triangle 路径求最小和( 动态规划问题)
- 求一个上三角矩阵中每一条斜线中的最大元素(L)和最小元素(S)。
- 矩阵的最小路径和
- C++求矩阵最小路径和进阶方法空间复杂度O(min {row, col})
- 矩阵最小路径和