algorithm/BOJ
[BOJ/C++] 2225번 : 합분해
林 :
2020. 11. 9. 21:57
풀이
이차원배열 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 |