我怎么这么菜


私信TA

用户名:xujingcheng

访问量:18145

签 名:

Break Away

等  级
排  名 712
经  验 3889
参赛次数 4
文章发表 44
年  龄 10
在职情况 学生
学  校 NUAA
专  业

  自我简介:

毕业前学一下编程, 嗯! 是这样。

解题思路:  0/1背包问题

参考代码:

#include <iostream>
#include<cmath>
using namespace std;
int T,M,ValueSum;
int dp[1002][1002];
int value[102],tim[102];
int get_MaxValue(int m,int t);
int main()
{
    cin>>T>>M;
    for(int i=0;i<=M;++i)
    {
        for(int j=0;j<=T;++j)
        dp[i][j]=-1;
    }
    for(int i=1;i<=M;++i)
            cin>>tim[i]>>value[i];
    ValueSum=get_MaxValue(1,T);
    cout<<ValueSum<<endl;
    return 0;
}
int get_MaxValue(int m,int t)
{
    if(dp[m][t]>0) return dp[m][t];
    if(m==M) dp[m][t]=t>=tim[m]?value[m]:0;
    else{
        if(t>=tim[m]) dp[m][t]=max(get_MaxValue(m+1,t),get_MaxValue(m+1,t-tim[m])+value[m]);
        else dp[m][t]=get_MaxValue(m+1,t);
    }
    return dp[m][t];
}


 

0.0分

0 人评分

  评论区

  • «
  • »