hdu Super Jumping
简单的dp,最优子结构是dp[i],即从0~i来看,是的dp[i]最大,然后找到最大中的最大就可以了,
转移方程是:dp[i]=max{dp[i],dp[j]+value[i]},注意这里有两个判断条件。

#include"iostream" #include"stdio.h" #include"string.h" #include"algorithm" #define mx 1010 using namespace std; __int64 n; __int64 value[mx]; __int64 dp[mx]; int main() { __int64 i,j,ans; while(cin>>n,n) { for(i=1;i<=n;i++) cin>>value[i]; memset(dp,0,sizeof(dp)); value[0]=0; ans=0; for(i=1;i<=n;i++) { for(j=0;j<i;j++) { if(value[j]<value[i]) { if(dp[j]+value[i]>dp[i]) dp[i]=dp[j]+value[i]; if(dp[i]>ans) ans=dp[i]; } } } cout<<ans<<endl; } return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步