动态规划---三角矩阵最小路径

来源:互联网 发布:linux 配置网卡 编辑:程序博客网 时间:2024/04/27 11:36

形如一下三角形,请给出从第一行到最后一行路径的最小值(每次只能从左下或者右下的路径)这是leetcode上的题目。在此做一个总结!!!

2
3 4
6 5 7
4 1 8 3

动态规划相关视频:http://v.youku.com/v_show/id_XODkxMDg0OTUy.html

源程序如下:

#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[n];   //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;
 
}


0 0
原创粉丝点击