您的位置:首页 > 其它

九度1160解题报告

2014-03-15 16:32 204 查看
http://ac.jobdu.com/problem.php?pid=1160

一眼一看就知道是dp,但是苦于找不到状态转移。网上看到了递推关系,其实很简单:对于m个苹果,n个盘子的摆法,可以分为有空盘和无空盘两类,有空盘类,就是在m,n-1的所有摆法中加入一个空盘,而无空盘类,就是先拿出n个苹果每个盘各摆一个,在分配剩下的苹果。当然,要注意m<n时,n-m个盘子有和没有是没区别的,因为永远用不上。代码如下:

#include <stdio.h>

int dp(int m, int n)
{
if (m==0||n==1) return 1;
if (m<n) return dp(m,m);
else return dp(m,n-1)+dp(m-n,n);
}

int main()
{
int m,n,t;
scanf("%d",&t);
for (int i=0;i<t;++i)
{
scanf("%d %d",&m,&n);
printf("%d\n",dp(m,n));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: