题目描述

一个旅行者有一个最多能用m公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn.若每种物品只有一件求旅行者能获得最大总价值。

输入

第一行:两个整数,M(背包容量,M<=200)和N(物品数量,N<=30);

第2..N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。

输出

仅一行,一个数,表示最大总价值。

样例输入 Copy

10 4
2  1
3  3
4  5
7  9

样例输出 Copy

12

核心代码:

for(int i=1;i<=n;i++)
    {
        for(int v=m;v>0;v--)
        {
            if(a[i].w<=v)
            {
                dp[i][v]=max(dp[i-1][v],dp[i-1][v-a[i].w]+a[i].c);
            }
            else dp[i][v]=dp[i-1][v];
        }
    }

v从m开始减,加上判断语句if(a[i].w<=v),可以使二维数组dp[i][x](a[i].w<=x<=m),都进行加上第i件物品的操作,这样子就可以使得在装了第i-1件物品后的所有能够装进第i件物品的背包情况都装上了第i件物品

#include<stdio.h>
struct g
{int w;int c;
};
int max(int a,int b)
{return a>b?a:b;
}
int main()
{int m,n,dp[40][400]={(0,0)};struct g a[40];scanf("%d%d",&m,&n);for(int i=1;i<=n;i++){scanf("%d%d",&a[i].w,&a[i].c);}for(int i=1;i<=n;i++){for(int v=m;v>0;v--){if(a[i].w<=v){dp[i][v]=max(dp[i-1][v],dp[i-1][v-a[i].w]+a[i].c);}else dp[i][v]=dp[i-1][v];}}printf("%d",dp[n][m]);return 0;
}

问题 C: 旅行者的背包相关推荐

  1. 【C4】【背包问题】旅行者的背包

    题目描述 一个旅行者有一个最多能装M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,......Wn,它们的价值分别为C1,C2......Cn(每个物品只有一个)求旅行者能获得最大总价值的物 ...

  2. 部分背包的贪婪算法 java_使用JAVA实现算法——贪心算法解决背包问题

    packageBasePart;importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.IOException ...

  3. 一个女孩如何准备行装和安全的独自旅行

    女孩,上路.....---摘自天涯 s这些年总是走在路上,总是一个人的长途旅行.   不知道为什么,独自出行的女孩子就是比男孩要多.是因为女孩更勇敢?还是因为男孩子更怕孤独?    不太清楚.    ...

  4. 运筹学动态规划matlab代码,运筹学胡运权清华版-7-04动态规划应用举例

    <运筹学胡运权清华版-7-04动态规划应用举例>由会员分享,可在线阅读,更多相关<运筹学胡运权清华版-7-04动态规划应用举例(45页珍藏版)>请在人人文库网上搜索. 1.第四 ...

  5. 运筹说 第69期 | 动态规划经典例题讲解

    通过前几期的学习,我们已经学会了动态规划的基本概念和基本原理,并且掌握了动态规划模型的建立和具体的求解方法,本期小编带大家学习动态规划在经济管理中的应用. 除了前面讲到的最优路径.资源分配问题外,动态 ...

  6. 转贴:生活中几招省钱的小窍门

    只要多多留意身边的促销信息,你同样也可以省下很多钱哦-- 1.购买物品篇   淘宝    WWW.TAOBAO.COM 淘宝,大家应该不会很陌生哦,上面的东西有好有坏,要做到每分钱都花在实处,你需要做 ...

  7. c++ 多重背包状态转移方程_【模板】各种背包问题amp;讲解

    [模板]各种背包问题&讲解  背包问题集合 一般来说,动态规划(DP)都是初学者最难闯过的一关,而在这里详细解说动态规划的一种经典题型:背包问题. 这里介绍的背包分为以下几种:01背包,完全背 ...

  8. 【动态规划】分组背包

    问题: 有N件物品,告诉你这N件物品的重量以及价值,将这些物品划分为K组,每组中的物品互相冲突,最多选一件,求解将哪些物品装入背包可使这些物品的费用综合不超过背包的容量,且价值总和最大. 算法: 首先 ...

  9. 分组背包(信息学奥赛一本通-T1272)

    [题目描述] 一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn.这些物品被划分为若干组,每组中的物品互相冲突,最 ...

最新文章

  1. Notification 浏览器右下角弹出提示消息
  2. fail2ban防止暴力破解
  3. 改动下ICTCLAS4J 0.9.1 提供了分词速度
  4. 滥用网络爬虫技术,多家公司被查!互金行业风控外包时代终结
  5. Rinne Loves Edges
  6. 建立分析模型和设计模型
  7. 目标跟踪_POI算法
  8. html提交按钮tab设置,html – 提交按钮没有集中,即使tabindex被正确设置
  9. Windows 环境变量设置工具
  10. 【转载】规则化和模型选择(Regularization and model selection)
  11. Outlook 2013中 IMAP配置
  12. ubuntu14.04 下 mysql 存储目录迁移
  13. 移远ec20型号区别_移远的EC20 4G模块
  14. vs2005安装opengl
  15. 注意力测试软件系统,注意力评估训练系统
  16. Word 下取消高亮度显示
  17. 互联网日报 | 字节跳动发布独立教育品牌“大力教育”;哈啰出行试水网约车;京东“好房京选”线下品牌落地...
  18. 墨刀如何导出html,墨刀元素如何快速拷贝到Axure里?
  19. prometheus监控+告警
  20. 硬盘存储双寡头之争 希捷重注中国市场或赢大丰收

热门文章

  1. 往recovery添加应用程序
  2. 分享100个ASP源代码总有一个是你想要的
  3. 【Crow】一款开源C++Web框架的安装与构建
  4. 盘点国内外十类垂直型社交网站
  5. linux 抓图,关于Linux下的抓图软件和使用方法介绍
  6. 程序员跳槽B站遭老东家索赔200万,法院判定无需赔偿,竞业限制不应阻碍工程师再就业...
  7. 个人收款码不得用于经营收款
  8. Airtest入门案例-操作网易云音乐
  9. 【硬件模块】NFC介绍
  10. windows无法连接到打印机_打印机无法连接怎么办