[英]Function does not return a value, while using a vector in c++
下面的 function 在使用 integer 數組 (minNumCoins) 時工作正常,但在使用向量而不是數組時不返回任何內容。 誰能告訴我為什么?
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];
}
主 function
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
Output:
Number of coins = 2
在這段代碼中:
for( int m =1 ; m<=money; m++){
minNumCoins[m] = 100000;
如果money
>= n
, m
可能會超出范圍,它在您的示例輸入中( money
=20, n
=2)。 結果,您的程序在到達 output 之前就崩潰了。
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<n; 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[any value which is less then n (0-(n-1))];
}
讓我知道我的建議是否有效。 使用 vector 時有些事情可能會導致錯誤。
您正在檢查外循環.. for( int m =1; m<=money; m++){
這里我認為m<n
將是循環工作的正確條件。 如果money
大於n
,則會發生越界錯誤,從而導致代碼崩潰。 如果money
= 10
, n
= 4
,則會出現數組越界錯誤。
加上回報將是這樣的。 return minNumCoins[n];
或者您可以聲明大小minNumCoins[money]
的minNumCoins
數組
現在正確地實現你的邏輯,希望你會得到想要的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.