1 条题解
-
0
不难得出状态转移方程
f[i][j]=j*(f[i-1][j]+f[i-1][j-1]);至于为什么则看代码
AC CODE :
#include<bits/stdc++.h> #define int long long using namespace std; int f[10][10]; signed main(){ int n,m;cin>>n>>m; f[1][1]=1;//初始化 for(int i=2;i<=n;i++){ for(int j=1;j<=min(i,m);/*正常情况有可能i>m,但此处可以直接使用i*/j++){ f[i][j]=j*(f[i-1][j]+f[i-1][j-1]); /* 最后一颗球放进一个盒子,有j种放法 包括前面的盒子则有j*f[i-1][j-1] 共用盒子则j*f[i-1][j] */ } } cout<<f[n][m]<<endl; return 0; }为什么这里面的代码块这么奇怪啊
希望对你有帮助喵~
- 1
信息
- ID
- 285
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 11
- 已通过
- 4
- 上传者
京公网安备 11011102002149号