티스토리 뷰

DS\Algo

BOJ 9084 동전

MathTrauma 2022. 10. 2. 11:52

 

문제 링크 : https://www.acmicpc.net/problem/9084

 

9084번: 동전

우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. 예를 들어, 30원을 만들기 위해서는

www.acmicpc.net

 

동전의 종류 N 이고 만들어야 할 금액은 V 이다.

$recur(n,v)$ 는 $n \; (1\le n \le N)$ 번 이하의 동전들을 사용해서 v 금액을 만드는 방법의 수이다.

 

#include<bits/stdc++.h>

using namespace std;

int N,V;
int arr[21];
int dp[21][10001];

int recur(int n, int v){
    if(n==1){
        if(v%arr[1]==0) return 1;
        else return 0;
    }
    
    int &ret=dp[n][v];
    if(ret) return ret;
    
    int q=v/arr[n];
    for(int i=q;i>=0;i--)
        ret+=recur(n-1,v-arr[n]*i);
    
    return ret;
}

void solve(){
    scanf("%d",&N);
    for(int i=1;i<=N;i++) scanf("%d",&arr[i]);
    
    scanf("%d",&V);
    memset(dp, 0, sizeof dp);
    
    printf("%d\n",recur(N, V));
}

int main(){
    int T; scanf("%d",&T);
    while(T--)
        solve();
}

 

 

 

반응형

'DS\Algo' 카테고리의 다른 글

BOJ 17404 RGB 거리 2  (1) 2022.10.03
BOJ 5052 Phone List ( 전화번호 목록 )  (0) 2022.10.02
BOJ 22876 츠바메가에시  (1) 2022.09.23
BOJ 2407 조합 (C++)  (0) 2022.09.20
BOJ 2338 긴자리 계산 (C++)  (0) 2022.09.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함