https://www.acmicpc.net/problem/11057
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수�
www.acmicpc.net
길이 N과 시작수 i라 할때 만들수 있는 오르막 수를 dp[N][i]라 하자. i다음에 올수 있는 수는 i부터 9까지 가능하므로, 점화식은 for(int k=j; k<=9; k++){ dp[i][j] += dp[i-1][k]; } 이렇게 사용하면 된다. 정답은 N일때 dp[N][0] ~ dp[N][9]까지 모두 더해주면 된다.
#include <cstdio>
int main(void){
int N, dp[1001][10]={{},{1,1,1,1,1,1,1,1,1,1},};
int ans=0;
scanf("%d",&N);
for(int i=2; i<=N; i++){
for(int j=0; j<=9; j++){
for(int k=j; k<=9; k++){
dp[i][j] += dp[i-1][k];
}
dp[i][j] = dp[i][j] % 10007;
}
}
for(int q=0; q<=9; q++) ans+=dp[N][q];
printf("%d",ans%10007);
}
'알고리즘 문제' 카테고리의 다른 글
[C/C++ 백준 10164번] 격자상의 경로 (Silver 1) (0) | 2020.05.16 |
---|---|
[C/C++ 백준 11051번] 이항 계수 (Silver 1) (0) | 2020.05.16 |
[C/C++ 백준 9465번] 스티커 (Silver 2) (0) | 2020.05.15 |
[C/C++ 백준 9507번] Generations of Tribbles (Silver 3) (0) | 2020.05.15 |
[C/C++ 백준 1003번] 피보나치 함수 (Silver 3) (0) | 2020.05.15 |