c++ - 在 C++ 中使用 vector 时,函数不返回值

标签 c++

以下函数在使用整数数组(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/

相关文章:

c++ - 将非 constexpr 整数值调整为非类型模板参数,并且代码膨胀

c++ - operator <- 在 C++ 中做什么?

c++ useless-cast from size_t to uint32_t for different targets

c++ - COM 对象生命周期

c++ - Cocos2d-x :How to change texture which go on multiple slots

c++ - 什么是 lambda 函数类型? C++

c++ - 如何填充字符串映射和双 vector 对

c++ - 我如何使用 Google Test 在 main() 函数的特定位置调用特定的测试函数?

c++ - 在 C++ 模板中将变量作为参数传递

c++ - POCO C++ - NET SSL - 如何发布 HTTPS 请求