1 条题解
-
0
思路
因为每个盒子中,最大的那颗糖必须放在该盒子的第一个位置。
所以,若一个盒子有 颗糖,则内部排列方式为 种。我们定义 表示 个糖果, 个盒子的方案数。
那么,第 颗糖可以单独成盒,也可以插入前面 个位置之一。
所以,状态转移方程为::::success[代码]{open}
#include<bits/stdc++.h> #define int long long using namespace std; const int mod=1e9+7; int n,k,dp[5005][5005]; signed main(){ cin >> n >> k; dp[0][0]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=min(i, k);j++){ dp[i][j]=(dp[i-1][j-1]+(i-1)*dp[i-1][j])%mod; } } cout << dp[n][k]; return 0; }:::
- 1
信息
- ID
- 12625
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 4
- 标签
- 递交数
- 27
- 已通过
- 16
- 上传者