//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 |