洛谷P2925-干草出售(01背包)

简介: 洛谷P2925-干草出售(01背包)

题目描述:


约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包干草,每一包都有它的体积Vi(l≤Vi≤C).约翰只能整包购买,


他最多可以运回多少体积的干草呢?


输入:


第一行两个整数,分别为 C 和 H。

第 2..H+1行:每一行一个整数代表第 i捆稻草的体积 Vi。


输出:



一个整数,为约翰能买到的稻草的体积。

输出时每行末尾的多余空格,不影响答案正确性


样例输入:


7 3

2 6 5


样例输出:


7


AC Code:


#include<bits/stdc++.h>
using namespace std;
#define N 50001
int dp[N],v[N];
int main()
{
  int c,h;
  cin>>c>>h;
  for(int i=1;i<=h;i++)
    cin>>v[i];
  memset(dp,0,sizeof(dp));
  for(int i=1;i<=h;i++)
  {
    for(int j=c;j>=v[i];j--)
    {
      dp[j]=max(dp[j],dp[j-v[i]]+v[i]);
    }
    if(dp[c]==c)//如果此时已经装满马车,则直接输出。 
    {
      cout<<c;
      return 0;//没有这个if判断就会RE 
    }
  }
  cout<<dp[c]<<endl;
  return 0;
}
相关文章
|
2月前
|
存储
(剑指Offer)10、菲波那切数列I—10、青蛙跳台阶问题II—63、股票的最大利润(2021/12/04)
(剑指Offer)10、菲波那切数列I—10、青蛙跳台阶问题II—63、股票的最大利润(2021/12/04)
32 0
|
6月前
|
人工智能 算法 测试技术
每日练习之完全背包——兑换零钱,完全背包问题总结
每日练习之完全背包——兑换零钱,完全背包问题总结
31 1
|
7月前
|
存储 算法 程序员
【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍
【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍
137 0
|
机器学习/深度学习 Java
AcWing——砝码称重
AcWing——砝码称重
92 0
|
人工智能 算法
区间DP——股票问题系列
区间DP——股票问题系列
93 0
区间DP——股票问题系列
每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期
每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期
85 0
每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期
蓝桥杯 砝码称重
蓝桥杯 砝码称重
62 0
AcWing 672. 税
AcWing 672. 税
90 0
AcWing 672. 税
AcWing 656. 钞票和硬币
AcWing 656. 钞票和硬币
92 0
AcWing 656. 钞票和硬币