【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】

这篇具有很好参考价值的文章主要介绍了【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

}

else

{

Result[j] = max(preResult[j],preResult[j-p[i]]+G[i]);

}

}

for (int i = 0; i < w; i++)

{

cout << Result[i]<<" ";

preResult[i] = Result[i];//计算完一行计算下一行 结果变成上一行的结果

//cout << preResult[i];

}

cout << endl;

}

return Result[w-1];

}

int main()

{

int p[5] = { 5,5,3,4,3 };

int Result;

int n = 5;

int w = 10;

int G[5] ={400,500,200,300,350};

Result =getMaxValue(p, n, w, G);

cout << Result<<endl;

system(“pause”);

}

输出(1)


【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

问题描述(2)0-1背包问题

=============================================================================

一个小偷来出来活动了, 拿了一个背包, 最多可以装50斤的东西的小袋子。 他眼睛一亮, 发现了三件宝贝a, b, c. 其中a重10斤, 价值60元; b重20斤, 价值100元; c重30斤, 价值120元。 问: 在背包允许的范围内, 小偷最多能偷到多少钱?

代码(2)


#include

using namespace std;

#define N 3 // N件宝贝

#define V 5 // V是背包的总capacity

int main()

{

int value[N + 1] = {0, 60, 100, 120}; // 钱啊

int weight[N + 1] = {0, 1, 2, 3}; // 重量

int f[N + 1][V + 1] = {0}; // f[i][j]表示在背包容量为j的情况下, 前i件宝贝的最大价值

int i = 1;

int j = 1;

for(i = 1; i <= N; i++)

{

for(j = 1; j <= V; j++)

{

// 递推关系式出炉

if(j < weight[i])

{

f[i][j] = f[i - 1][j];

}

else

{

int x = f[i - 1][j];

int y = f[i - 1][j - weight[i]] + value[i];

f[i][j] = x < y ? y : x;

}

}

}

for(i = N; i >= 1; i–)

{

for(j = 1; j <= V; j++)

{

printf("%4d ", f[i][j]);

}

cout << endl;

}

return 0;

}

输出(2)


【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

0-1背包 简化

=======================================================================

物品个数n=5,物品重量w[5]={2,2,6,5,4},物品价值v[5]={6,3,5,4,6}, 背包的最大容量为10,求价值最大化。

代码:


#include

using namespace std;

#define N 5 // N件宝贝

#define V 10 // C是背包的总capacity

int main()

{

int value[N + 1] = {0, 6, 3, 5, 4, 6}; // 钱啊

int weight[N + 1] = {0, 2, 2, 6, 5, 4}; // 重量

int f[N + 1][V + 1] = {0}; // f[i][j]表示在背包容量为j的情况下, 前i件宝贝的最大价值

int i = 1;

int j = 1;

for(i = 1; i <= N; i++)

{

for(j = 1; j <= V; j++)

{

// 递推关系式出炉

if(j < weight[i])

{

f[i][j] = f[i - 1][j];

}

else

{

int x = f[i - 1][j];

int y = f[i - 1][j - weight[i]] + value[i];

f[i][j] = x < y ? y : x;

}

}

}

for(i = N; i >= 1; i–)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取

【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】,程序员,动态规划,c++,算法

理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取

[外链图片转存中…(img-4TxTx69L-1712559553309)]

[外链图片转存中…(img-D7Jeyibc-1712559553310)]

[外链图片转存中…(img-7Y2lvvDK-1712559553310)]文章来源地址https://www.toymoban.com/news/detail-858196.html

到了这里,关于【动态规划之“0-1背包问题”----国王和金矿问题----C++实现】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《程序员面试金典(第6版)》 面试题 08.11. 硬币(动态规划,组合问题,C++)

    硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007) 示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额: 5=5 5=1+1+1+1+1 示例2: 输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额: 1

    2023年04月08日
    浏览(53)
  • 动态规划算法解决背包问题,算法分析与C语言代码实现,时间效率解析

    🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨,经典算法的解析✨都在这儿,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -  数据结构与算法_勾栏听曲_0 🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️ 📌个人主

    2023年04月16日
    浏览(47)
  • 动态规划-背包问题-完全背包

    对比01背包,完全背包中的每件物品有无数件。 也就是说,每件物品可以拿0,1,…,k,…件。 dp[i][j]表示前i种物品,体积为j时的最大价值 对于第i件物品: 不拿:dp[i][j]⇐dp[i-1][j] 拿一件:dp[i][j]⇐dp[i-1][j-w[i]]+v[i] 拿两件:dp[i][j]⇐dp[i-1][j-2w[i]]+2v[i] … 拿k件:dp[i]][j]⇐dp[i

    2024年04月08日
    浏览(46)
  • 动态规划之背包问题——完全背包

    算法相关数据结构总结: 序号 数据结构 文章 1 动态规划 动态规划之背包问题——01背包 动态规划之背包问题——完全背包 动态规划之打家劫舍系列问题 动态规划之股票买卖系列问题 动态规划之子序列问题 算法(Java)——动态规划 2 数组 算法分析之数组问题 3 链表 算法

    2024年02月03日
    浏览(53)
  • 完全背包&多重背包问题(动态规划)

    完全背包问题: 每个物品使用次数没有限制,与0-1背包的不同之处在于 遍历背包的顺序 是正序。 多重背包问题: 与完全背包的区别在于,每一种物品是有个数限制的,不能无限选择。这篇博客讲解的非常详细,可以参考学习: 多重背包问题---超详细讲解+优化(不懂你揍我

    2024年04月10日
    浏览(46)
  • 【动态规划专栏】-- 01 背包问题 -- 动态规划经典题型

    目录 背包问题概述 01 背包问题 01背包⭐⭐  【算法原理】 第一问 第二问 C++ 算法代码 复杂度分析 【空间优化 - 滚动数组】 C++ 算法代码 复杂度分析 分割等和子集⭐⭐ 【算法原理】  对于类01背包问题 C++ 算法代码  【空间优化 - 滚动数组】  C++ 算法代码 目标和⭐⭐ 【算

    2024年02月05日
    浏览(54)
  • 动态规划DP之背包问题3---多重背包问题

    目录 DP分析: 优化:  二进制优化 例题:         01背包是每个物品只有一个,完全背包问题是每个物品有无限个。         那么多重背包问题就是 每个物品有有限个 。 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。 求解

    2024年03月20日
    浏览(47)
  • 动态规划-----背包类问题(0-1背包与完全背包)详解

    目录 什么是背包问题? 动态规划问题的一般解决办法: 0-1背包问题: 0 - 1背包类问题  分割等和子集:  完全背包问题:  完全背包类问题 零钱兑换II: 背包问题(Knapsack problem)是一种组合优化的NP完全问题。 问题可以描述为:给定一组物品,每种物品都有自己的重量和价格

    2024年04月17日
    浏览(33)
  • 算法系列--动态规划--背包问题(1)--01背包介绍

    💕\\\"趁着年轻,做一些比较cool的事情\\\"💕 作者:Lvzi 文章主要内容:算法系列–动态规划–背包问题(1)–01背包介绍 大家好,今天为大家带来的是 算法系列--动态规划--背包问题(1)--01背包介绍 背包问题是动态规划中经典的一类问题,经常在笔试面试中出现,是非常 具有区分度 的题

    2024年04月16日
    浏览(50)
  • 算法系列--动态规划--背包问题(3)--完全背包介绍

    💕\\\"Su7\\\"💕 作者:Lvzi 文章主要内容:算法系列–动态规划–背包问题(3)–完全背包介绍 大家好,今天为大家带来的是 算法系列--动态规划--背包问题(3)--完全背包介绍 链接: 完全背包 可以发现完全背包问题和01背包问题还是特比相似的 分析: 完全背包问题 是 01背包问题 的推广

    2024年04月25日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包