Taene's
[DP] 백준-다리놓기 C++ 1010번 본문
https://www.acmicpc.net/problem/1010
1010번: 다리 놓기
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.
www.acmicpc.net
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int T;
cin >> T;
long long sum = 1;
int n, m;
for (int i = 0; i < T; i++)
{
cin >> n >> m;
sum = 1;
for (int j = 1; j <= n; j++)
{
sum = sum * m-- / j;
}
cout << sum << '\n';
}
return 0;
}
#include <iostream>
using namespace std;
int dp[31][31];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
for (int i = 1; i <= 30; i++)
dp[1][i] = i;
for (int i = 2; i <= 30; i++)
{
for (int j = i; j <= 30; j++)
{
for (int k = j - 1; k >= 1; k--)
dp[i][j] += dp[i - 1][k];
}
}
int t;
cin >> t;
while (t--)
{
int n, m;
cin >> n >> m;
cout << dp[n][m] << '\n';
}
return 0;
}
조합(Combination):
서로 다른 n개에서 순서를 생각하지 않고 r개를 택하는 것을 n개에서 r개를 택하는 조합이라고 한다. 조합의 관점은 순서가 달라도 내용물이 동일하면 하나로 취급한다. 즉, 조합의 관점에서 다음 두 배열은 같다. ({A,B,C}, {C,A,B})
그래서 같은 조건이라면 순열의 경우의 수가 조합의 경우의 수보다 많다.
'알고리즘 문제풀이 > DP' 카테고리의 다른 글
[DP] 백준-거스름돈 C++ 14916번 (0) | 2023.09.20 |
---|---|
[DP] 백준-돌 게임 C++ 9655 (0) | 2023.09.20 |
[DP] 백준-핸드폰번호 궁합 C++ 17202번 (0) | 2023.09.18 |
[DP] 백준-피보나치 수 2 C++ 2748번 (0) | 2023.09.15 |
[DP] 백준-부녀회장이 될테야 C++ 2775번 (0) | 2023.09.14 |