解题思路:数塔问题,简单的动态规划。
参考代码:
#include <bits/stdc++.h> using namespace std; const int N=26; int main() { int a[N][N]; int dp[N][N]={0}; int n; cin>>n; for(int i=0;i<n;i++) for(int j=0;j<=i;j++) { cin>>a[i][j]; //输入 dp[i][j]=a[i][j]; //不破坏数组a的值,用数组dp保存结果 } for(int i=n-2;i>=0;i--) //从倒数第二层开始往上求解 for(int j=0;j<=i;j++) //当前项等于当前项与当前项正下方、当前项右下方最大值之和 dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]); cout<<dp[0][0]; return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:692 |
程序员的表白 (C语言代码)浏览:667 |
【矩阵】 (C++代码)浏览:950 |
字符逆序 (C语言代码)浏览:646 |
核桃的数量 (C语言代码)浏览:671 |
1126题解浏览:595 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:616 |
C二级辅导-等差数列 (C语言代码)浏览:822 |
输入输出格式练习 (C语言代码)浏览:753 |
C语言训练-8除不尽的数 (C语言代码)浏览:1402 |