gpt4 book ai didi

c++ - 在标准输出中执行打印导致随机分配数组中的值

转载 作者:行者123 更新时间:2023-11-30 02:25:35 25 4
gpt4 key购买 nike

如果这是一个愚蠢的问题,我很抱歉。我已经为硬币找零问题编写了以下代码。

#include <iostream>
using namespace std;

int coinChange(int coins[], int n, int amount)
{
int combinations[amount + 1];
combinations[0] = 1;

int start;
for(int i = 0; i < n; i++)
{
start = coins[i];
int coin = coins[i];
for(int j = start; j < amount + 1; j++)
{
if(j >= coin)
{
combinations[j] += combinations[j - coin];
}
}
for(int j = 0; j < amount + 1; j++)
cout << combinations[j] << " ";
cout << endl;
}

return combinations[amount];
}

int main(int argc, char const *argv[])
{
int coins[] = {1, 2, 5};
int n = sizeof(coins)/sizeof(coins[0]);

int amount = 12;

// cout << "Total combinations: ";
cout << coinChange(coins, n, amount) << endl;

return 0;
}

代码运行良好,并为我提供了正确的输出,如下所示。

1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 2 2 3 3 4 4 5 5 6 6 7
1 1 2 2 3 4 5 6 7 8 10 11 13
13

但是,如果我取消注释行 cout << "Total combinations: ";main 中调用函数的正上方功能,程序给我奇怪的输出。

Total combinations: 1 32768 32768 32768 44137 44137 44137 44137 196418491 196418492 -790461916 -790429149 619621115 
1 32768 32769 65536 76906 109673 121043 153810 196539534 196572302 -593922382 -593856847 25698733
1 32768 32769 65536 76906 109674 153811 186579 196605070 196649208 -593812708 -593703036 25885312
25885312

正在执行 cout在函数调用导致此随机输出之前?还是我的编译器版本有问题?

最佳答案

如何初始化(归零?)组合

有点像

int combinations[amount + 1] {};

否则 combinations[i] 的初始值是 undefined 不确定的,所以 are 未定义 final values 程序的行为(来自 Shafik Yaghmour 的更正;谢谢!)

关于c++ - 在标准输出中执行打印导致随机分配数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44037152/

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