#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAX_N = 355;
int N, num[MAX_N][MAX_N], dp[MAX_N][MAX_N];
void init()
{
memset(dp, 0, sizeof(dp));
for(int i=1; i<=N; i++){
for(int j=1; j<=i; j++)
scanf("%d", &num[i][j]);
}
}
void f()
{
for(int i=N; i>=1; i--)
for(int j=1; j<=i; j++)
dp[i][j] =
max(dp[i+1][j]+num[i][j], dp[i+1][j+1]+num[i][j+1]);
}
int main()
{
while(~scanf("%d", &N)){
init();
f();
printf("%d", dp[1][1]);
}
return 0;
}
Cow Bowling(POJ, 3176, 基础dp)
最新推荐文章于 2020-07-24 18:53:48 发布
本文介绍了一个关于寻找三角形网格中从顶部到底部的最大路径和的算法实现。通过动态规划的方法,逆向从底部向上计算最大路径和,最终在顶部得到整个三角形的最大路径和。该算法效率高且易于理解。
354

被折叠的 条评论
为什么被折叠?



