1. 程式人生 > >動態規劃---三角矩陣最小路徑

動態規劃---三角矩陣最小路徑

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;
 
}