| //https://www.acmicpc.net/problem/1328 |
| #include <iostream> |
| #define MOD 1000000007 |
| using namespace std; |
| long long dp[101][101][101]; |
| int main() |
| { |
| int n, l, r; |
| long long temp; |
| cin >> n >> l >> r; |
| dp[1][1][1]=1; |
| dp[2][1][2]=dp[2][2][1]=1; |
| for(int i=3; i<=n; i++) |
| { |
| dp[i][i][1]=dp[i][1][i]=1; |
| //i=3 일때, 1,2,3 3,2,1 순으로 빌딩 있는 것 |
| for(int j=1; j<i; j++) |
| { |
| for(int k=1; k<i; k++) |
| { |
| temp=dp[i-1][j][k]; |
| temp=(temp*(i-2)) % MOD; |
| temp=(temp+dp[i-1][j-1][k]) % MOD; |
| temp=(temp+dp[i-1][j][k-1]) % MOD; |
| dp[i][j][k]=temp; |
| } |
| } |
| } |
| cout << dp[n][l][r]; |
| } |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
| 180126_2819_격자판의 숫자 이어 붙이기 (0) | 2018.01.26 |
|---|---|
| 180126_2616_소형기관차 (0) | 2018.01.26 |
| 180125_10835_카드게임 (0) | 2018.01.25 |
| 180124_10942_팰린드롬? (0) | 2018.01.24 |
| 180123_1937_욕심쟁이 판다 (0) | 2018.01.23 |