HDU1024动态规划(我们不一样)

#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;

猜你喜欢

转载自blog.csdn.net/artistkeepmonkey/article/details/87989793