public class Main {
public static int coinChangeGreedy(int[] coins, int n) {
int result = 0;
while (n != 0)
{
for (int i=coins.length - 1 ; i>=0 ; i--)
{
if (coins[i] <= n)
{
n = n - coins[i];
result++;
}
}
}
return result;
}
public static void main(String[] args)
{
int[] coins = {1, 2, 5};
int n = 11;
coinChangeGreedy(coins, n);
}
}
答案 0 :(得分:0)
嗯,首先 - 你没有打印任何东西 - 你只需运行该功能。
第二 - 你的代码中有一点缺陷。你看 - 如果你找到一个有效的硬币,你不应该去下一个硬币,但看看那个硬币是否适合&#34;再次。
在您的for
示例中。你有5作为第一个然后移动到2.但你应该再次尝试5(防止public static int coinChangeGreedy(int[] coins, int n) {
int result = 0;
while (n != 0) {
for (int i=coins.length - 1 ; i>=0 ; i--) {
if (coins[i] <= n) {
n = n - coins[i];
System.out.println("Adding " +coins[i]);
i++; //neutralizing i-- with i++.
result++;
}
}
}
return result;
}
循环转到下一个元素)。见例子:
System.out.println("Total coins needed: " +coinChangeGreedy(coins, n));
不是你会看到5被带走两次。
附: - 如果你假设硬币阵列将升序。
要打印出来,你就去了:
ArrayList
此外 - 如果您想跟踪所使用的硬币,您可以在每次选择时将它们存储在. And of course you declare and initialize that
中。 list.add(coins [i])foreach ($post->getLikes as $like) {
//$like will contain a model that likes the post
}
在开始时列出。