URAL 1017|Staircases|动态规划
2017-10-03 22:29
507 查看
题目翻译
一个充满好奇心的孩子有N(5≤N≤500)个积木。这些积木可以构建不同的阶梯。阶梯由c(c≥2)列组成,后一列的积木个数要比前一列积木个数要多(否则就不是阶梯了)。下图包含了N=11和N=5的示例:
你的任务是写一个程序,输入N,输出Q——由正好N个积木搭成的阶梯有多少种。
样例输入
212样例输出
995645335题解
考虑dpj表示用了j个方块形成的阶梯有多少种。那么dpj→dpj+i,其中i表示新增的一列高度为i,即需要i个积木。
#include <cstdio> long long dp[512]; int main() { int n, i, j; scanf("%d", &n); dp[0] = 1; for (i = 1; i <= n; ++i) for (j = n; j >= i; --j) // 倒过来排序类似背包 dp[j] += dp[j - i]; printf("%lld\n", dp - 1); return 0; }
相关文章推荐
- URAL:1017 Staircases
- ural 1017 Staircases
- Ural 1017 Staircases
- ural 1017 Staircases
- ural 1017. Staircases(dp)
- Ural 1017. Staircases
- ural 1017. Staircases
- ural 1017. Staircases(dp)
- URAL 1017. Staircases
- 递推DP URAL 1017 Staircases
- URAL 1017 Staircases
- ural 1017. Staircases
- URAL 1017 Staircases
- Ural 1017 Staircases(DP)
- URAL 1017. Staircases(递推)
- Ural_1017. Staircases(DP)
- ural 1017. Staircases
- ural 1017. Staircases(dp数的划分)
- ural1017 Staircases (动态规划)
- ural 1073. Square Country 动态规划