解题思路:数塔问题,简单的动态规划。
参考代码:
#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语言代码)浏览:691 |
C语言程序设计教程(第三版)课后习题8.9 (Java代码)浏览:1413 |
不会做的浏览:954 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:624 |
WU-C语言程序设计教程(第三版)课后习题11.11 (C++代码)(想学链表的可以看看)浏览:1464 |
C语言训练-自由落体问题 (C语言代码)浏览:650 |
母牛的故事 (C语言代码)浏览:739 |
矩阵加法 (C语言代码)浏览:1768 |
C二级辅导-进制转换 (C语言代码)浏览:750 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:839 |