算法设计作业;三角形最大和;

#include <iostream> using namespace std; int sum[100][100]; int sanjiao[100][100]; int edge; void dp() { for(int i=0;i<edge;++i) { sum[edge-1][i]=sanjiao[edge-1][i]; } for(int i=edge-2;i>=0;--i) { for(int j=0;j<=i;++j) { sum[i][j]=max(sum[i+1][j],sum[i+1][j+1])+sanjiao[i][j]; } } cout<<"max:"<<sum[0][0]<<endl; } int main() { cin>>edge; for(int i=0;i<edge;++i) { for(int j=0;j<=i;++j) { cin>>sanjiao[i][j]; } } dp(); }

 

sum[i][j]表示i,j位置开始的三角形的最大和,等于 max{左下开始的三角形最大和,右下开始的三角形最大和} + arr[i][j]

你可能感兴趣的:(算法,include,作业)