分析:经典DP,从上往下递归,从下往上求解。 Code #include <iostream>using namespace std;int dp[101];int map[101][101];int main(){ int m; while(cin>>m) { for(int i=0;i<m;++i) for(int j=0;j<=i;++j) { cin>>map[i][j]; if(i==m-1) dp[j] = map[i][j]; } for(int i=m-2;i>=0;--i) for(int j=0;j<=i;++j) dp[j] = max(dp[j],dp[j+1]) + map[i][j]; cout<<dp[0]<<endl; } return 0;}/**//*#include <iostream>using namespace std;int dp[101][101];int map[101][101];int main(){ int m; while(cin>>m) { for(int i=0;i<m;++i) for(int j=0;j<=i;++j) { cin>>map[i][j]; if(i==m-1) dp[i][j] = map[i][j]; } for(int i=m-2;i>=0;--i) for(int j=0;j<=i;++j) dp[i][j] = max(dp[i+1][j],dp[i+1][j+1]) + map[i][j]; cout<<dp[0][0]<<endl; } return 0;}*/ 转载于:https://www.cnblogs.com/jaskist/archive/2009/04/30/1446983.html