Hitori


私信TA

用户名:dotcpp0675304

访问量:366

签 名:

等  级
排  名 8344
经  验 1181
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 河南开封科技传媒学院
专  业

  自我简介:

TA的其他文章

解题思路:其实最开始我(蒟蒻)看到这道题想用贪心来做,结果贪心是真的不适合寻找全体的最优解。深搜的话感觉还是有些复杂,要保留记忆,所以便使用动态规划来求,这样其实还挺简单的。代码不长也比较好理解。(baka琪露诺也能看懂的x

注意事项:其实本题非常像01背包那道题,但是难度要低好多。

参考代码:

#include <iostream>

#include<bits/stdc++.h>


using namespace std;


int T, M;


int Ti[105], V[105];


int dp[1005];//动态规划数组




int main()

{

cin >> T >> M;

for (int i = 1;i <= M;i++)

{

cin >> Ti[i] >> V[i];

}

for (int i = 1;i <= M;i++)

{

for (int j = T;j >= Ti[i];j--)

{

dp[j] = max(dp[j - Ti[i]] + V[i], dp[j]);//不超过时间就加上药的价值取最大

}

}

cout << dp[T];

}

 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区