【发布时间】:2021-10-01 16:31:16
【问题描述】:
我正在寻找使用递归来实现硬币找零问题 (https://leetcode.com/problems/coin-change),并且到目前为止有以下解决方案。问题似乎正常工作,除非:
int[] coins = {2};
int k = 3;
输出为:-2147483648
预期输出为:-1
解决方法如下:
static void Main(string[] args)
{
int[] coins = {2};
int k = 3;
Console.WriteLine(Coin_Change(k, coins));
}
public static int Coin_Change(int amount, int[] coins) {
if (amount == 0) {
return 0;
}
if (amount < 0) {
return -1;
}
int minSteps = int.MaxValue;
for (int i = 0; i < coins.Length; i++)
{
if (coins[i] <= amount)
{
minSteps= Math.Min(minSteps, 1 + Coin_Change(amount - coins[i], coins));
}
}
return minSteps;
}
如何扩展上述解决方案来处理这种情况?
谢谢!
【问题讨论】:
标签: c# recursion dynamic-programming