| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 存钱罐最小值问题(java) -> 正文阅读 |
|
[数据结构与算法]存钱罐最小值问题(java) |
1.主观题?(100分)
实验六:使用动态规划算法解决存钱问题(完成实验报告三、四、五、六的内容) 一、实验目的 ? ? ? ?练习使用动态规划算法解决实际问题(使用Java语言实现)。 二、实验内容 【问题描述】 给定一个空存钱罐的重量和这个存钱罐最多能装进去的重量,现在需要在不打破这个存钱罐的情况下猜测里面最少的钱。每种钱的数量不做限制,条件是必须装满,同时给出每种钱币的价值和重量。? 【输入】 输入的第一行数据包含整数T,表示测试用例的数量。每个测试用例的第一行都包含两个整数e和f(1<=e<=f<=10000),分别表示空存钱罐和装满硬币的存钱罐的重量(以克记)。第二行包含一个整数n(1<=n<=500),表示硬币的总数量。接下来的n行每行都包含两个整数p和w,分别表示硬币的面值和重量。 【输出】 对每个测试用例,都输出一行,包含”存钱罐内的最小金额是 x“,其中x是存钱罐内的最小金额。若无法确定,则输出”这是不可能的“ 【输入输出示例】 样例输入: 3? ?10 110? ?2? ?1 1? ?30 50? ?10 110? ?2? ?1 1? ?50 30? ?1 6? ?2? ?10 3? ?20 4 样例输出: 存钱罐内的最小金额是60 存钱罐内的最小金额是100 这是不可能的 【思路提示】 这是一个完全背包问题。 三、 程序代码 (1)MinWeigh
(2)Coin
(3)TestMinWeight
四、 实验结果(含程序运行截图) 五、 出现问题及解决方法 本次实验为完全背包问题与01背包不同的是一种物品可以放入多个,所以我们再装入物品的时候需要考虑装入该物品的数量,正常情况下是求能装入背包的最大值但是本题是装入的最小值,所以再求状态转移方程时有困难,以及在求解数组时候的思想比较难考虑到,也是参考了网上的思路后才开始动手的。下面说一下不同于最大值的点: (1)开始时不同于其他的求解最大值的背包问题是要对dp数组进行赋值为0的初始化而是进行对于dp数组中的每一个元素来复制成该整型变量所能承受的最大值。 for(int i=1;i<=v;i++){ 因为要筛选出最小值所以赋值为其他怕影响最小值比较时因为原始数组初始化存放数据的影响导致比较错误。 (2)求解状态转移方程 ? ? ? ?求解状态方程网上有很多做法比如在ij的·循环内再加一个对应的放入某种物品数量的k变量来进行记录但是适应于最大值不适应于最小值,所以问题很多,修改的时候不能单纯的进行将最大值改成最小值,所以在查找资料后发现了下面的状态方程: dp[j]=Math.min(dp[j],dp[j-coins[i].weight]+coins[i].value);//状态转移方程 ? ? ? ?该状态转移方程为循环求解给出的钱币种类以及质量,比较更小的那个进行存放。而且是一种钱币比较一次,但是最终结果都存放在一维的dp数组中,最后循环到最后的值如果能正好将存钱罐体积填满则dp数组的最后一个值不为500000001,如果没办法填满则最后的dp数组的值仍然为500000001没有变化,则给出的钱币种类不能将体积填满,所以是不可能的。 六、 实验心得 本次实验心得为算法还是要多拓展自己的思路要有自己思考的过程,争取有一天能够自己想出好的算法。 ?第一篇博客,确实有在网上查资料的成分,大家有什么问题欢迎在评论区留言呀,有什么好的想法我也想学习一下~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 15:52:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |