#include<iostream>
#include<algorithm>
using namespace std;
const int M=1000050;
int dp[M];
int dpm[M];
int main()
{
int m,account,num;
while(cin>>m)
{
cin>>account;
for(int i=0;i<account+10;i++)
{
dp[i]=-9999999;
dpm[i]=-9999999;
}
for(int i=0;i<account;i++)
{
cin>>num; //不保存到数组里 直接处理一遍
for(int j=m-1;j>=0;j--)
{
if(j>i)j=i;
if(j==0)
{
dp[0]=max(num,num+dp[0]);
dpm[0]=max(dpm[0],dp[0]);
}
else
{
dp[j]=max(dpm[j-1],dp[j])+num;
dpm[j]=max(dp[j],dpm[j]);
}
}
}
cout<<dpm[m-1]<<endl;
}
return 0;
}
HDU1024动态规划(我们不一样)
猜你喜欢
转载自blog.csdn.net/artistkeepmonkey/article/details/87989793
今日推荐
周排行