- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在构建一个自下而上的方法来解决硬币找零问题。我必须提供所需找零所需的最少硬币数。可能因为给定的面额无法形成值(value)而无法找零。
例如,给定的面额是 {4, 8} 并且他们要求找零 5 那么不可能给 5。我构建了下面的程序,它适用于大多数情况,除非无法形成请求的更改。例如,当面额仅为 {4} 而我请求 5 时,它返回一个错误。我该怎么做才能解决这个问题?
这里的P代表请求的变更,S是面额数组denominations[]中存储的面额数,从索引0到S-1。dp是初始化为-1的用于计算的二维数组。
for (int i = 0; i <= P; ++i) {
for (int j = 0; j < S; ++j) {
int ans, x, y;
// Min. no. of coins with current coin
x = (i - denominations[j] >= 0) ? dp[i - denominations[j]][j] + 1: 0;
// Min. no. of coins w/o current coin
y = (j > 0) ? dp[i][j - 1] : 0;
ans = min(x, y);
if (ans == 0) ans = max(x, y);
dp[i][j] = ans;
}
}
感谢您的帮助。
最佳答案
错误是当禁止两者使用当前硬币,和不使用它时,您没有正确处理这种情况。这发生在您的示例中,例如:当 i=1 和 j=0 时,我们尝试不使用任何东西或仅使用 4c 硬币来总共赚取 1c;但是我们不能用 4c 硬币做到这一点,没有 4c 硬币我们也不能做到这一点。
在这种情况下,x 和 y 都将被赋值为 0,if (ans == 0) ans = max(x, y);
行旨在捕捉这种情况当 任一个 的可能性被禁止时,最终会错误地将 0 分配给 ans。外循环的后续迭代将因此“认为”有可能对没有任何硬币的总数进行相应的总和,并愉快地向其加 1,为您的示例给出错误答案 1。
我认为,最干净的解决方法是选择一个不同于 0 的标记值来表示“此操作是不可能的,不应考虑”。由于您将两种可能的操作与 min()
组合在一起,因此自然适合极高的值:
#define INF (INT_MAX-1) // Or anything higher than the biggest sensible answer
for (int i = 0; i <= P; ++i) {
for (int j = 0; j < S; ++j) {
int ans, x, y;
// Min. no. of coins with current coin
x = (i - denominations[j] >= 0) ? min(INF, dp[i - denominations[j]][j] + 1) : INF;
// Min. no. of coins w/o current coin
y = (j > 0) ? dp[i][j - 1] : INF;
ans = min(x, y);
dp[i][j] = ans;
}
}
请注意 ans = min(x, y);
行现在无需进一步工作即可给出正确答案,包括它应该是 INF
的情况,因为 x和 y 是 INF
。
更微妙的一点是,当我们在计算过程中读取一些dp[a][b]
时,该值被允许为 INF
:这是一个合法值,表示 a
美分不能用 <= b
类型的任何硬币组合制成。理想情况下,为 INF
选择的值将具有这样的属性,即它与任何正值相加或相乘将使其保持在 INF
,从那时起我们就不必再做任何进一步的操作了。对该算法的调整:我们对 INF
值执行的每个操作都会正确地将其保留在 INF
。但是整数算术不是那样工作的,所以在将一些东西添加到一个可能是 INF
的值之后,我们需要检查我们是否没有“超过无穷大”,如果是这样就修复它:那是为什么 d[i - denominations[j]][j] + 1
包含在 min(INF, ...)
调用中。 (这也是我将 INF
定义为比 INT_MAX
小一的原因——这样就不会发生溢出。)
关于c++ - 自下而上的方法来找零硬币的最小数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327215/
我有几个带有视频和图像的 Bootstrap slider 。在 slider 之外,我想要一个可以转到包含视频的幻灯片的按钮。包含视频的幻灯片的数量因 slider 而异。我想做的是获取幻灯片的数量
我在编写一个查询时遇到了一些问题。 我有一个由文件及其大小(以字节为单位)组成的表。它看起来像这样: FileUrl | FileSize ------------------ xyz.docx |
我有一个带 iframe 的网站和一个带另一个 iframe 的网站,所以它是一个 iframe 内嵌另一个 iframe(都在不同的域上)。那么有没有办法从父div或父主div的url(parent
以下表达式在 JavaScript 中给出了特殊的结果。 typeof (5 + "7") // Gives string typeof (5 - "7") // Gives number 如
我有一个名为“交易”的表,每当有人在我的网站上进行购买时,我都会在其中输入用户 ID、购买类型和金额。 我想向每个用户显示过去 7 天的这些统计信息。 目前,我有这个: $data = array()
我一整天都在努力寻找解决这一挑战的办法。 我有一张 table : id | amount | type | date |
我正在尝试在 10 个数据节点的集群中测试 Map reduce 程序的性能。在此过程中,我使用了 5 个 Reducers,然后是 10 个等等。 我在想增加 reducer 的数量也会使工作完成得
我正在使用 html5 输入 type="number"。我想监视此输入的变化,但是: 因为在支持它的浏览器中 它有旋转控件 我不能只监视 .keyup, 因为我不想等待它失去焦点,所以我不能只监视
我的购物车表格有问题。我创建了一个如下所示的表格: SQL Fiddle 我的问题是我希望能够选择产品 ID,并计算该产品 ID 在表格中重复的次数,以便我可以显示用户在购物车中拥有的商品数量。 寻找
我使用许多包含来显示我网站的一小部分。使用许多 include 是否合适,或者我应该减少它们(尽可能多)。包含函数要多花多少时间? 我的主页加载速度很慢。有什么方法可以让它加载更快。 (我的主页每天在
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: length of array in function argument 我的数组大小是5。例如: arrC
是否有标准的 Python 方法来处理 Python 中的物理单位/数量?我看到了来自不同领域(如物理学或神经科学)的不同模块特定解决方案。但我更愿意使用标准方法而不是“孤岛”解决方案,因为其他人应该
基本上就像标题所说的那样,有没有办法从 JavaScript 程序中查看事件循环中当前存在多少个 promise ?最好在 Deno 上。 最佳答案 Deno v1.26 添加了一个内部 API,可用
我只是想知道大型项目-比如说航空公司的预订系统,它可能有多少类/对象。 对象:客户,飞机,机场,路线,机票,订单。这就是我能想到的。该项目可能是成千上万的代码行,那么是否可能会有更多的类(执行与对象无
如果有办法限制Scala中未处理的 future 数量,我将无法提供资金。 例如下面的代码: import ExecutionContext.Implicits.global for (i
从昨天开始,我一直在努力做到这一点,尽管还没有运气。我找到了解决方案,在我想要完成的事情上总是有细微的差别。 我试图获得所有可能的组合,稍微像这样:combination_k ,但我也希望相同的项目与
我正在尝试更新 1500 个 QuickBooks Online 库存项目的现有数量。我可以从商店中提取 1500 种产品。 这个更新可以做吗?我看到手头没有数量的物品: https://develo
我想与工作人员一起扩展应用程序。 可能有 1 名 worker 或 100 名 worker ,我想无缝扩展它们。 这个想法是使用副本集。然而,由于特定领域的原因,扩展它们的适当方法是让每个工作人员知
Android Studio 有没有办法显示 XML 布局中存在的 View 数量?众所周知,布局应该包含 <=80 个 View ,因此超过此值就会出现此警告,因此告知数量会非常有帮助。 Layou
虽然编码时总是出现有关 IBOutlet 保留计数的相同问题:从 NIB 取消归档对象后保留计数?何时对 IBOutlet 使用 @property?设置时保留还是分配? Mac 和 iPhone 之
我是一名优秀的程序员,十分优秀!