반응형
https://www.acmicpc.net/problem/1010
1010번: 다리 놓기
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.
www.acmicpc.net
조합 문제였습니다.
풀이방법
겹치지 않게 다리를 놓는 방법은 순서에 상관없이 뽑는 조합의 방식과 유사합니다.
m개 중 n개를 뽑는 경우의 수를 출력하면 됩니다.
Code
#include <bits/stdc++.h>
using namespace std;
int t;
int comb[31][31];
int dfs(int n, int k){
if(n == k || k == 0) return 1;
int &ret = comb[n][k];
if(ret) return ret;
ret = dfs(n-1,k) + dfs(n-1,k-1);
return ret;
}
int main(){
cin >> t;
while(t--){
int n, m;
memset(comb,0,sizeof(comb));
cin >> n >> m;
cout << dfs(m,n) << '\n';
}
}
'Algorithm > Math' 카테고리의 다른 글
(C++) - 백준(BOJ) 2998번 : 8진수 (0) | 2020.01.08 |
---|---|
(C++) - 백준(BOJ) 1789번 : 수들의 합 (0) | 2020.01.04 |
(C++) - 백준(BOJ)코딩 11758번 : CCW 답 (0) | 2017.04.07 |
(C++) - 백준(BOJ) 2942번 : 퍼거슨과 사과 (0) | 2017.04.06 |
(C++) - 백준(BOJ) 2960번 : 에라토스테네스의 체 (0) | 2017.04.02 |