https://www.acmicpc.net/problem/2225
1. dp 규칙찾는 방법
1.1 표를그린다
1.2 규칙을세우고(뒤에만 숫자추가하기) 경우의수를 센다.
1.3. 그 숫자가 어디서 왔는지 규칙을 찾고 화살표로 표시한다
1.4. 규칙을 찾았으면 dp 테이블로 옮기고 숫자의 이동을 표시한다.
1.5. 점화식을 세운다(dp[j]=dp[j]+dp[j-1])
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
int n, k;
int dp[204];
int divd = 1000000000;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k;
fill(dp, dp + 204, 1);
for (int i = 2; i <= k; ++i) { //회차
for (int j = 1; j <= n; ++j) {
dp[j] = dp[j]%divd + dp[j - 1]%divd;
//cout << dp[j] << " ";
}
}
//for (int i = 0; i <= n; ++i) cout << dp[i] << " ";
cout << dp[n] % divd;
return 0;
}
'Algorithm > dp' 카테고리의 다른 글
백준 2565 전깃줄 c++ // dp, LIS(최장부분증가수열) 풀이 (0) | 2023.12.01 |
---|---|
백준 2748 피보나치수2 c++ // 탑다운 dp 형식 (0) | 2023.11.30 |
백준 2294 동전2 c++ // dp 동전논리 정리, 규칙성발견 dp테이블 형식 (0) | 2023.11.29 |
백준 2293 동전1 c++ // dp, 경우의수는 덧셈이다! (0) | 2023.11.28 |
백준 9251 LCS c++ // DP 푸는방법 : 1. 부분해->전체해 2. DP테이블 그리기 (0) | 2023.11.26 |