https://www.acmicpc.net/problem/11057
1. 의사코드
1. 아래칸 = 위칸의 총합인것을 발견할수 있다.
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int d[1004][10]; //오큰수의 갯수 [길이][시작숫자]
int n;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
fill(&d[0][0], &d[0][0] + 1000 * 10, 1);
for (int i = 2; i <= 1001; ++i) {
for (int j = 0; j <= 9; ++j) {
ll sum = 0;
for (int k = j; k <= 9; ++k) {
sum += d[i - 1][k]%10007;
}
d[i][j] = sum;
}
}
cout << d[n + 1][0]%10007;
return 0;
}
'Algorithm > dp' 카테고리의 다른 글
백준 1890 점프 c++ // dp, 배열순회dp, dp[next] += dp[cur] (0) | 2024.04.08 |
---|---|
백준 10844 쉬운계단수 c++ // dp (0) | 2024.04.08 |
백준 14501 퇴사 c++ // dfs, dp, 트리하부호출 되는경우만 dfs실행 (0) | 2024.03.20 |
프로그래머스 파괴되지않은건물 c++ // dp, 구간합 효율적으로 구하는법 (0) | 2023.12.12 |
프로그래머스 보행자천국 c++ // dp, 경우의수는 dp를 의심하라. (0) | 2023.12.07 |