#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
int a[5][5];
int path[5][5]={0};
for(int i=0;i<5;i++)
for(int j=0;j<i+1;j++)
cin>>a[i][j];
int b[5][5];
for(int i=0;i<5;i++)
{
b[4][i]=a[4][i];
}
for(int j=3;j>=0;j--)
{
for(int i=0;i<j+1;i++)
{
b[j][i]=a[j][i]+max(b[j+1][i],b[j+1][i+1]);
if(b[j+1][i]>b[j+1][i+1])
{
path[j][i]=i;
}
else
{
path[j][i]=i+1;
}
}
}
cout<<b[0][0]<<endl;
cout<<endl<<"路径为:";
cout<<a[0][0];
int m;
m=path[0][0];
for(int i=1;i<5;i++)
{
cout<<"-->"<<a[i][m];
m=path[i][m];
}
cout<<endl;
return 0;
}
数塔问题(动规)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cup160828/article/details/82084942
猜你喜欢
转载自blog.csdn.net/cup160828/article/details/82084942
今日推荐
周排行