动态规划 数字三角形

    xiaoxiao2021-03-25  98

    【例1】数字三角形。如下所示为一个数字三角形。请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。     1、 一步可沿左斜线向下或右斜线向下走;      2、 三角形行数小于等于100;         3、 三角形中的数字为0,1,…,99;      测试数据通过键盘逐行输入,如上例数据应以如下所示格式输入: 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5                                                               

    【算法分析】

    #include<iostream> using namespace std; int D[101][101]; int n; int maxsum[101][101]; int Maxsum(int i,int j) { if(maxsum[i][j]!=-1) return maxsum[i][j]; if(i==n) maxsum[i][j]=D[i][j]; else { int x=Maxsum(i+1,j); int y=Maxsum(i+1,j+1); maxsum[i][j]=max(x,y)+D[i][j]; } return maxsum[i][j]; } int main() { int i,j; cin>>n; for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { cin>>D[i][j]; maxsum[i][j]=-1; } }cout<<Maxsum(1,1)<<endl; return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-16354.html

    最新回复(0)