- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
换硬币是一个很受欢迎的面试问题。本质上,这个问题意味着给定一组硬币面额和总数,如果每种面额的硬币都有无限供应,那么有多少种方法可以获得总数。
这是我的代码。逻辑是每次我选择一枚硬币时,问题都会减少到解决总数减去硬币的问题。
public static int numberOfWays(int total, int[] options){
int[][] memo = new int[options.length][total+1];
for (int i = 0; i <memo.length ; i++) {
for (int j = 0; j <memo[i].length ; j++) {
if(i == 0) memo[i][j] = 1;
else if(options[i] > j ) memo[i][j] = memo[i-1][j];
else memo[i][j] = memo[i-1][j] + memo[i][j - options[i]];
}
}
return memo[options.length-1][total];
}
这适用于 total = 5 和 options = 1, 2, 3
的测试用例但失败 total = 10 and options = 2, 5, 3, 6
谁能帮助我理解我做错了什么。
最佳答案
首先,最好写出每个数组元素代表什么的声明:
memo[i][j]
represents how many ways to make the total amountj
given only coins in denominationsoptions[0]
,options[1]
, ...,options[i]
.
现在,您似乎从中推导出了一些定律:
memo[0][j]
是1
对于所有 j
i
大于 0,memo[i][j]
与memo[i-1][j]
相同每当options[i] > j
i
大于 0,memo[i][j]
是memo[i-1][j] + memo[i][j - options[i]]
每当options[i] <= j
你的问题是这些定律中的第一个是不正确的。 (后面两个是)
声明“memo[0][j]
is 1
for all j
”仅在options[0]
时成立是1
.如果options[0]
不是 1
, 然后 memo[0][j]
当 j
时为 1是 options[0]
的倍数, 如果不是则为 0。仅使用面额硬币 2
,你赚不到 5 美分,所以你应该有(第二组数据)memo[0][5] == 0
, 但你的程序说 memo[0][5] == 1
.然后,这会抛出所有后续计算。
所以我会修改你的程序说:
if(i == 0) { if (j % options[i] == 0) memo[i][j] = 1;
else memo[i][j] = 0; }
else if(options[i] > j ) memo[i][j] = memo[i-1][j];
else memo[i][j] = memo[i-1][j] + memo[i][j - options[i]];
(尽管就纯粹的文体注释而言,我发现 if
/else
即使是单个语句也不使用大括号的语句是在询问错误)
关于java - 使用动态规划改变硬币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36696667/
我目前正在做一个项目,试图开发一种用于 P2P 能源交易的货币和模型,其中每产生一千瓦时的可再生能源就会向该生产商类型转换一枚硬币。我的问题是关于销毁智能合约中的代币。 所有与我的项目类似的当前实现都
在没有Maps帮助的情况下通过Memoization解决问题,由于读取文件的方法,我得到了TLE,根据我的说法,这不应该是这种情况。可能的原因是什么? 这是给出 AC - http://ideone.
考虑下面这段伪代码,其中d是面额值数组,k是面额数,n是要进行更改的金额。 Change(d; k; n) 1 C[0] 我真的不明白这部分,你为什么要用它,谁能给我解释一下! 最佳答案 为了回答
我正在尝试在我的网站上实现 Coin Slider (http://workshop.rs/2010/04/coin-slider-image-slider-with-unique-effects/)
我有使用硬币 slider 的画廊 var $jq = jQuery.noConflict(); $jq(window).load(function() { var imhei
我使用了从该站点提取的硬币 slider http://workshop.rs/projects/coin-slider/ .它现在自动滚动并仅在悬停时显示上一个和下一个。我需要禁用自动滚动并正常显示
我的问题是一道CodeFu练习题(2012 round 2 problem 3)。它基本上归结为将整数数组分成两个(几乎)相等的两半并返回两者之间可能的最小差异。我在下面包含了问题描述。如评论中所述,
我们的老师要求我们制作一 jar 硬币,用来计算我们有多少便士、一毛钱等,然后给出总金额。 这是他希望我们使用的模板 https://online.pcc.edu/content/enforced/7
我正在尝试使用币安币 future 的 api 下载 BTC/USD 永续 future 的历史价格数据,具体来说,我想使用 this endpoint .但是,我找不到必须为 BTC/USD 指定的
我上周刚开始学习计算机科学,我们得到了一个名为“硬币”的工作表,其中我必须找出一组硬币中有多少个 25 美分、10 美分、5 美分和 10 便士。我遇到了很多麻烦,并收到了该错误。这是我的代码 pac
我正在构建一些使用消耗性硬币的测验。我使用 NSUserDefault 来保存设备上的硬币及其工作。我还在 qiuz 中使用 CloudKit 处理数据。 不麻烦的是,如果用户切换设备如何恢复硬币?有
我是一名优秀的程序员,十分优秀!