水题,经典题,dp题
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int n,i,j,ans;
int dp[360][360],mp[360][360];
scanf("%d",&n);
for (i=1; i<=n; i++)
{
for (j=1; j<=i; j++)
{
scanf("%d",&mp[i][j]);
}
}
dp[1][1]=mp[1][1];
ans=dp[1][1];
for (i=2; i<=n; i++)
{
dp[i][1]=dp[i-1][1]+mp[i][1];
ans=ans>dp[i][1]?ans:dp[i][1];
for (j=2; j<=i-1; j++)
{
dp[i][j]=mp[i][j]+(dp[i-1][j]>dp[i-1][j-1]?dp[i-1][j]:dp[i-1][j-1]);
ans=ans>dp[i][j]?ans:dp[i][j];
}
dp[i][i]=dp[i-1][i-1]+mp[i][i];
ans=ans>dp[i][i]?ans:dp[i][i];
}
printf("%d\n",ans);
}
经典动态规划算法题解
本文深入探讨了一道经典的动态规划题目,通过使用C++实现,详细解释了动态规划的基本思想和解决步骤,包括初始化、状态转移方程的构建以及最终答案的获取。通过实例分析,读者可以更好地理解动态规划在解决复杂问题时的优势。
354

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



