题目:
分析:
这题都能跑偏? 刚开始想dp的话,加入3个球,还需要考虑取哪三个,连最基本的dp的五后效性都忘了?
j
*(f
[i
-1][j
]+f
[i
-1][j
-1]);
I个球放入j个盒子。 第二个是指单独放,哪个盒子单独,所以乘以单独盒子的个数。(错误思想:我还要考虑哪个单独呀!,再仔细想想吧!) 第一个是指放在同一个盒子里。j个盒子,j中放法。
智力水平又下降了吗?o(╥﹏╥)o
代码:
#include<bits/stdc++.h>
using namespace std
;
int n
,m
;
long long f
[15][15];
int main()
{
cin
>>n
>>m
;
f
[1][1]=1;
for(int i
=2;i
<=n
;i
++)
for(int j
=1;j
<=min(i
,m
);j
++)
f
[i
][j
]=j
*(f
[i
-1][j
]+f
[i
-1][j
-1]);
cout
<<f
[n
][m
]<<endl
;
return 0;
}
再次做这个题,还是没做出来。
加个“前”,应该更好理解了。