简单DP
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; long long a[400][400]; long long dp[400][400]; int n; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) scanf("%lld",&a[i][j]); long long ans=0; memset(dp,0,sizeof dp);dp[1][1]=a[1][1]; for(int i=2;i<=n;i++) { for(int j=1;j<=i;j++) { dp[i][j]=a[i][j]+max(dp[i-1][j],dp[i-1][j-1]); ans=max(ans,dp[i][j]); } } printf("%lld\n",ans); return 0; }
本文介绍了一个简单的动态规划(DP)算法实例,通过该算法解决了一类最优化问题。具体实现中,采用二维数组进行状态转移,最终求得路径上的最大值。
354

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



