这个题目感觉到了用动态规划,但是奈何组合数学的不好,没有写出状态转移方程
参考一个博主的博客,写出了满分代码,还特意搜了一下斯特林数,学到了学到了
详细解答在博主的博客里
链接如下
https://www.cnblogs.com/wengsy150943/p/5509787.html
这是一道不太一样的dp题,他的边界在递推的中间,而且还要注意每一维度的范围,否则知道状态转移方程也写不出来
算是比一般dp要难一些的dp了吧
记下来备查
满分代码如下
#include <iostream>
#include <memory.h>
using namespace std;
int dp[201][201]; //注意 数组的第二维度的范围要和第一维度一样 要不然会出错
int main()
{
int n,m;
cin>>n>>m;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
if(i==j){
dp[i][j]=1;
}
else dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
}
}
cout<<dp[n][m];
return 0;
}