首页 > 解决方案 > 函数不返回值,而在 C++ 中使用向量

问题描述

下面的函数在使用整数数组(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];
}

主功能

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

标签: c++

解决方案


在这段代码中:

   for( int m =1 ; m<=money; m++){
        minNumCoins[m] = 100000;

mmoney如果>=可能会超出范围n,它在您的示例输入(money=20,n=2)中。结果,您的程序在输出任何内容之前就崩溃了。


推荐阅读