标签:
数字三角形,最简单的dp之一。
不过这次尝试了下滚动数组。
/* ID: modengd1 PROG: numtri LANG: C++ */ #include <iostream> #include <stdio.h> #include <memory.h> using namespace std; int dp[2][1000],input[1001]; int main() { freopen("numtri.in","r",stdin); freopen("numtri.out","w",stdout); int N; scanf("%d",&N); memset(dp,0,sizeof(dp)); for(int i=0;i<N;i++) { for(int j=0;j<=i;j++) { scanf("%d",&input[j]); if(j==0) dp[(i+1)%2][j]=dp[i%2][j]+input[j]; else dp[(i+1)%2][j]=max(dp[i%2][j]+input[j],dp[i%2][j-1]+input[j]); } } int ans=0; for(int i=0;i<N;i++) ans=max(max(ans,dp[0][i]),dp[1][i]); cout<<ans<<endl; return 0; }
标签:
原文地址:http://www.cnblogs.com/modengdubai/p/4767771.html