ural 1017. Staircases(dp)
2013-07-29 11:48
429 查看
Time limit: 1.0 second |
input | output |
---|---|
212 | 995645335 |
决策变量: dp
[k] 表示N块砖,最后一个楼梯的高度为k
状态转移方程:dp
[k] = dp[N-1][k-1] + dp[N-k][k-1];
为什么会构造如此的状态转移方程??可以递推的去想象dp
[k]这个状态是怎么从前一个状态来的,
最后一个楼梯的高度为k,有两种来源:在原有楼梯上加和增加新楼梯
1). 直接在上次最后一个楼梯上面加一块(有人可能会疑问为什么不能再最后一个楼梯上加2,3,.....块,如果在最后一个楼梯加两块变成k,这就变成了在N-K块砖组成的楼梯后面加一个高度为k的楼梯,与下面重复)
2).直接在最后一个楼梯后面加一个高度为k的楼梯
#include <iostream> #include <vector> #include <algorithm> #define MAX 502 using namespace std; long long dp[MAX][MAX]={0}; int main(){ int N; cin >>N; dp[1][1] = 1; for(int i = 2; i <= N; i ++ ){ for(int j = 1; j <= i; j ++){ dp[i][j] = dp[i-1][j-1] + dp[i-j][j-1]; } } long long ans = 0; for(int i = 0;i != N; i ++ ) ans += dp [i]; cout<<ans<<endl; return 0; }
相关文章推荐
- Ural 1017 Staircases(DP)
- Ural_1017. Staircases(DP)
- 递推DP URAL 1017 Staircases
- ural 1017. Staircases(dp)
- ural 1017. Staircases(dp数的划分)
- URAL 1017|Staircases|动态规划
- URAL 1017 Staircases dp练习
- URAL 1017 Staircases
- URAL:1017 Staircases
- Ural 1017. Staircases
- ural 1017. Staircases
- ural 1017 Staircases
- ural 1017. Staircases
- URAL 1017 Staircases
- URAL 1017. Staircases(递推)
- 【DP】ural 1017
- Ural 1017 Staircases
- URAL 1017. Staircases
- ural 1017 Staircases
- ural 1017. Staircases DP