Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 코인 체인지 2


다른 종류의 동전과 총 금액이 있다고 가정해 보겠습니다. 그 양을 구성하는 조합의 수를 계산하는 모듈을 작성해야 합니다. 우리는 각 종류의 동전이 무한히 있다고 가정할 수 있습니다. 따라서 금액이 5이고 동전이 [1, 2, 5]이면 4개의 조합이 있습니다. (1+1+1+1+1), (1+1+1+2), (1+2+2), (5)

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 크기 + 1의 배열 dp 하나 생성
  • dp[0] :=1
  • n :=동전 배열의 크기
  • 0 ~ n – 1 범위의 i에 대해
    • 범위 코인[i]의 j에 대해 금액
      • dp[j] :=dp[j – 코인[i]]
  • 반환 dp[금액]

예(C++)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int change(int amount, vector<int>& coins) {
      vector <int> dp(amount + 1);
      dp[0] = 1;
      int n = coins.size();
      for(int i = 0; i < n; i++){
         for(int j = coins[i]; j <= amount; j++){
            dp[j] += dp[j - coins[i]];
         }
      }
      return dp[amount];
   }
};
main(){
   Solution ob;
   vector<int> v = {1,2,5};
   cout << (ob.change(5, v));
}

입력

5
[1,2,5]

출력

4