코인체인지2 리트코드
6373 단어 javadpalgorithms
해당 금액을 구성하는 조합의 수를 반환합니다. 해당 금액이 동전의 조합으로 구성할 수 없는 경우 0을 반환합니다.
각 종류의 동전이 무한한 수라고 가정할 수 있습니다.
답은 부호 있는 32비트 정수에 맞도록 보장됩니다.
예 1:
Input: amount = 5, coins = [1,2,5]
Output: 4
Explanation: there are four ways to make up the amount:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1
class Solution {
public int change(int amount, int[] coins) {
int dp[][] = new int[coins.length][amount+1];
for(int row[] : dp) Arrays.fill(row,-1);
return allPossibleCombinations(coins.length-1,new ArrayList<>(),coins,dp,amount);
}
public int allPossibleCombinations(int index,List<Integer> list,int[] coins, int[][] dp,int amount){
if(index==0){
if(amount % coins[index]==0) {
return 1;
}
return 0;
}
if(dp[index][amount]!=-1) return dp[index][amount];
int take = 0;
if(amount>=coins[index]){
list.add(coins[index]);
take = allPossibleCombinations(index,list,coins,dp,amount-coins[index]);
list.remove(list.size()-1);
}
int dontTake = allPossibleCombinations(index-1,list,coins,dp,amount);
return dp[index][amount] = take+dontTake;
}
}
dp의 테이블 방식을 사용하여 스택 공간을 제거할 수 있습니다.
Reference
이 문제에 관하여(코인체인지2 리트코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/prashantrmishra/coin-change-2-leetcode-4nmc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)