connecting the dots
[BOJ/C++] 2225번 : 합분해 본문
풀이
이차원배열 DP[N][K]를 기반으로 한다.
DP[i][j]=DP[0][j-1]+DP[1][j-1]+ ... +DP[i][j-1] 점화식을 세웠다.
for문 돌리기 전 배열 값 설정을 잘못했더니 오류 발생함.
중간에 1,000,000,000 나머지 값 저장하는 것도 잊지 않기.
코드
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 32 33 34 35 36 37 38 39 40 | #include <stdio.h> #include <iostream> #include <cstdio> using namespace std; int main(){ int dp[201][201]={0}; int n, k; scanf("%d %d", &n, &k); for(int i=1;i<=n;i++){ dp[i][1]=1; } for(int i=1;i<=k;i++){ dp[0][i]=1; dp[1][i]=i; } for(int i=2;i<=n;i++){ for(int j=2;j<=k;j++){ for(int p=0;p<=i;p++){ dp[i][j]=dp[i][j]+dp[p][j-1]; dp[i][j]=(dp[i][j])% 1000000000; } } } printf("%d", dp[n][k] % 1000000000); } | cs |
'algorithm > BOJ' 카테고리의 다른 글
[BOJ/C++] 2667 : 단지번호붙이기 (0) | 2020.12.21 |
---|---|
[BOJ/C++] 2606 : 바이러스 (0) | 2020.12.20 |
[BOJ/C++] 2579번 : 계단 오르기 (0) | 2020.11.09 |
[BOJ/C++] 11053번 : 가장 긴 증가하는 부분 수열 (0) | 2020.11.08 |
[BOJ/C++] 2156번 : 포도주 시식 (0) | 2020.11.08 |