以下函数在使用整数数组(minNumCoins)时工作正常,但在使用 vector 而不是数组时不会返回任何内容。谁能告诉我为什么?
int dp_change(const vector<int> &coins, int money, int n){
//vector<int> minNumCoins(n);
int minNumCoins[n];
int numCoins = 0;
minNumCoins[0] = 0;
for( int m = 1; m <= money; m++){
minNumCoins[m] = 100000;
for(int i = 0; i < coins.size(); i++){
if(m >= coins[i]){
numCoins = minNumCoins[m - coins[i]] + 1;
if(numCoins < minNumCoins[m]){
minNumCoins[m] = numCoins;
}
}
}
}
//return minNumCoins.at(money);
return minNumCoins[money];
}
主要功能
int main() {
int n, money;
cin >> money;
cin >> n;
vector<int> coins(n);
for(int i = 0; i < n; i++){
cin >> coins[i];
}
//int num_of_coins = dp_change(coins, money);
cout << "Number of coins = " << dp_change(coins, money, n);
return 0;
}
示例
Input:
> 20 <br>
2 <br>
10 <br>
1
输出:
Number of coins = 2
最佳答案
在这段代码中:
for( int m =1 ; m<=money; m++){
minNumCoins[m] = 100000;
m
如果 money
可能会出界>= n
,它位于您的示例输入中(money
=20,n
=2)。结果,您的程序在输出任何内容之前就崩溃了。
关于c++ - 在 C++ 中使用 vector 时,函数不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65706618/