gpt4 book ai didi

使用回溯计算硬币数组的可能组合

转载 作者:行者123 更新时间:2023-11-30 21:28:04 26 4
gpt4 key购买 nike

问题涉及以下内容。

对于给定的数组

int coins[2] = { 1, 2 };

它应该返回3。因为存在可能的组合。

1 + 1 + 1 + 1 = 4
1 + 1 + 2 = 4
2 + 2 = 4

但是我的函数返回5,有什么想法吗?

int change(int coins[], int n, int sum, int index);

int main() {
int coins[2] = { 1, 2 };
int c = change(coins, 2, 4, 0);
printf("%d", c);
}

int change(int coins[], int n, int sum, int index) {
if (sum == 0)
return 1;
if (sum < 0) {
return -1;
}

for (int i = 0; i < n; i++) {
if (coins[i] > sum)
continue;
int k = change(coins, n, sum - coins[i], index);
if (k > -1)
return k + 1;
}
return -1;
}

最佳答案

在调用您的函数的行代码中尝试此操作:

int c = change(coins,2,4,0) - 1;

并尝试不同的情况。

关于使用回溯计算硬币数组的可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44998461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com