BIT 1008 Putting Apples

来源:互联网 发布:中国为什么不禁烟 知乎 编辑:程序博客网 时间:2024/06/06 20:28

题目大意:有N个苹果要放进K个篮子里(n,k<=100),可以有篮子是空的,问有多少种方法。(21)和(12)属于同一种

 

考察点:DP

 

思路分析:状态转移方程,我们假设f[i][j]表示有i个苹果放入j个篮子里,那么f[i][j]=f[i][j-1]+f[i-j][j],意思就是先考虑留一个空篮子,那么就是f[i][j-1],那么只要再加上一个空篮子不留的就行了,即f[i-j][j]。此二维方程还可压缩成一维,f[i]+=f[i-j]

 

这题其实思考了挺久。。太久没做DP了手生

 

#include<stdio.h>long int f[110];int n,k;int main() {    int i,j;while (scanf("%d%d",&n,&k)!=EOF)    {f[0]=1;for (i=1;i<=109;i++)  {f[i]=0;}for (i=1;i<=k;i++)for (j=i;j<=n;j++)f[j]+=f[j-i];printf("%d\n",f[n]);    }return 0;}


 

 

原创粉丝点击