放苹果

Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 30894   Accepted: 19504

Description

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

Input

第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

Output

对输入的每组数据M和N,用一行输出相应的K。

Sample Input

  1. 1
  2. 7 3

Sample Output

  1. 8
  2.  
  3. 最基础的整数划分,求将n拆分成不超过m个数之和的方法数
    递归法:
           根据nm的关系,考虑以下几种情况:
           1)当n=1时,不论m的值为多少(m>0),只有一种划分即{1};
            (2) m=1时,不论n的值为多少,只有一种划分即n1,{1,1,1,...,1};
            (3) n=m时,根据划分中是否包含n,可以分为两种情况:
                  (a). 划分中包含n的情况,只有一个即{n};
                  (b). 划分中不包含n的情况,这时划分中最大的数字也一定比n小,即n的所有(n-1)划分。
                  因此 f(n,n) =1 + f(n,n-1);
            (4) n<m时,由于划分中不可能出现负数,因此就相当于f(n,n);
            (5) n>m时,根据划分中是否包含最大值m,可以分为两种情况:
                   (a). 划分中包含m的情况,即{m, {x1,x2,...xi}}, 其中{x1,x2,... xi} 的和为n-m,因此这种情况下
                     f(n-m,m)
                   (b). 划分中不包含m的情况,则划分中所有值都比m小,即n的(m-1)划分,个数为f(n,m-1);
                  因此 f(n, m) = f(n-m, m)+f(n,m-1);
          综上所述:
                 f(n, m)=   1;                (n=1 or m=1)
                            f(n, n);                        (n<m)
                            1+ f(n, m-1);                (n=m)
                            f(n-m,m)+f(n,m-1);      (n>m)
  1. //2016.9.1
  2. #include <iostream>
  3. #include <cstdio>
  4. #define N 15
  5.  
  6. using namespace std;
  7.  
  8. int f(int n, int m)
  9. {
  10. if(n== || m==)return ;
  11. else if(n < m)return f(n, n);
  12. else if(n == m)return (+f(n, n-));
  13. else return f(n-m, m)+f(n, m-);
  14. }
  15.  
  16. int main()
  17. {
  18. int T, n, m;
  19. cin>>T;
  20. while(T--)
  21. {
  22. scanf("%d%d", &n, &m);
  23. int ans = f(n, m);
  24. cout<<ans<<endl;
  25. }
  26.  
  27. return ;
  28. }

POJ1664(整数划分)的更多相关文章

  1. poj1664 放苹果(DPorDFS)&&系列突破(整数划分)

    poj1664放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33661   Accepted: 20824 Desc ...

  2. 51nod p1201 整数划分

    1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2, ...

  3. 2014北大研究生推免机试(校内)-复杂的整数划分(DP进阶)

    这是一道典型的整数划分题目,适合正在研究动态规划的同学练练手,但是和上一个随笔一样,我是在Coursera中评测通过的,没有找到适合的OJ有这一道题(找到的ACMer拜托告诉一声~),这道题考察得较全 ...

  4. 整数划分 (区间DP)

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ...

  5. nyoj 90 整数划分

    点击打开链接 整数划分 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk,  其中n1≥n2≥-≥nk≥1,k≥ ...

  6. 整数划分 Integer Partition(二)

    本文是整数划分的第二节,主要介绍整数划分的一些性质. 一 先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中  m1 m2 ... mi连续,比如5=1+4就不符合 ...

  7. 整数划分 Integer Partition(一)

    话说今天百度面试,可能是由于我表现的不太好,面试官显得有点不耐烦,说话的语气也很具有嘲讽的意思,搞得我有点不爽.Whatever,面试中有问到整数划分问题,回答这个问题过程中被面试官搞的不胜其烦,最后 ...

  8. 51nod1201 整数划分

    01背包显然超时.然后就是一道神dp了.dp[i][j]表示j个数组成i的方案数.O(nsqrt(n)) #include<cstdio> #include<cstring> ...

  9. NYOJ-571 整数划分(三)

    此题是个非常经典的题目,这个题目包含了整数划分(一)和整数划分(二)的所有情形,而且还增加了其它的情形,主要是用递归或者说是递推式来解,只要找到了递推式剩下的任务就是找边界条件了,我觉得边界也是非常重 ...

随机推荐

  1. latex题注(caption)位置

    http://anything-is-ok.blog.163.com/blog/static/205720233201301634053760/ 我们以插入图片为例来说明latex中将题注(capti ...

  2. Ajax 下拉加载数据

    $(document).scroll(function() { var pageHeight = $(document).height()-$(window).height(); var bodySc ...

  3. Windows Azure Storage Client Library 2.0 入门

    入门连接如下: http://gauravmantri.com/2012/11/17/storage-client-library-2-0-migrating-table-storage-code/

  4. iOS下bound,center和frame

    本文转发至:http://www.xuebuyuan.com/1846606.html 在写程序的时候发现,iOS下的坐标.位置很容易弄乱,特别是在不同的坐标系统中,必须完成弄明白一些概念才能做相应的 ...

  5. UIStepper 缩放:UI的使用

    // 实现文件:声明在对应的.h文件.继承至UIViewControllor - (void)viewDidLoad { [super viewDidLoad]; // 按钮 self.stp = [ ...

  6. [Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange

    1.HTTP-GET WCF 方式 通过Http的方式提供metadata 1.1.配置文件方式 <system.serviceModel> <services> <se ...

  7. PHP安装插件方式

    PHP安装插件方法主要有两种: 1.先安装相关的库,zlib.curl.xml等,然后在安装 php 时的 ./configure 中设置 --with-xxx(你需要的插件),三部曲安装即可. 2. ...

  8. PHP运行方式

    原文链接:http://www.cnblogs.com/xia520pi/p/3914964.html 1.运行模式 关于PHP目前比较常见的五大运行模式: 1)CGI(通用网关接口 / Common ...

  9. 字典NSDictionary的常见用法

    // 动态获取字典的第一个典 NSString *firstKey = responseObject.keyEnumerator.nextObject;

  10. minor gc 和 full gc

    JAVA中关于GC的分析中,需要搞清楚,GC线程在什么时候,对什么东西,做了什么操作. 1-在什么时候 首先需要知道,GC分为minor GC和full GC,JAVA内存分为新生代和老年代,新生代中 ...