The below function works fine when using an integer array(minNumCoins) but does not return anything while using a vector instead of an array. Can anyone tell me why?
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]; } Main 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; } Sample
Input: > 20 <br> 2 <br> 10 <br> 1 Output:
Number of coins = 2