解题思路:数塔问题,简单的动态规划。
参考代码:
#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语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:570 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:737 |
C语言训练-计算1977!* (C++代码)浏览:857 |
【明明的随机数】 (C++代码)浏览:781 |
【出圈】 (C语言代码)浏览:796 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:338 |
WU-输出正反三角形 (C++代码)浏览:1021 |
母牛的故事 (C语言代码)浏览:551 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:609 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:577 |