【发布时间】:2011-04-09 01:48:01
【问题描述】:
这是一个代码,可以找到用 4 种不同的钞票获得 87 的总方法。我想知道如何改变它以获得最少的账单(4-20、1-5、2-1),而不是每一种方式。任何帮助将不胜感激。
int target = 87;
int[] dollarSizes = { 1, 5, 10, 20 };
int[] ways = new int[target+1];
ways[0] = 1;
for (int i = 0; i < dollarSizes.Length; i++) {
for (int j = dollarSizes[i]; j <= target; j++) {
ways[j] += ways[j - dollarSizes[i]];
}
}
【问题讨论】:
-
一种方法是跟踪您必须使用多少张钞票才能在数组中达到 87 美元。然后,您可以简单地在该数组中查找最小的数字,这将是您所需的最小账单数量。
-
家庭作业?好像是我儿子会问的问题。
-
另外,请注意,有一张合法的 2 美元钞票。
-
@CadeRoux 我敢肯定,这会符合要求;)就像......教授给出的那些
-
@drachenstern 在大帆船、镰刀和坚果中,一切都会变得容易得多。