一、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。



二、题解

        这道题最重要的就是要找到突破口,这个突破口就是把所有的结果分为,有一个盘子为空和全部盘子都有苹果这两种情况。之后再递归求解子问题。

        f(m-n,n):每个盘子都有苹果

        f(m,n-1):至少有一个盘子没有苹果

则,f[m][n] = f[m-n][n]+f[m][n-1]

        这里有详细题解和扩展http://www.cnblogs.com/celia01/archive/2012/02/19/2358673.html

三、Java代码

 

import java.util.Scanner; 

public class Main {
public static int f(int a,int b){
if(a<0)
return 0;
if(a==0||b==1)
return 1;
return f(a-b,b)+f(a,b-1);
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n=cin.nextInt();
int a,b;
for(int i=0;i<n;i++){
a=cin.nextInt();
b=cin.nextInt();
System.out.println(f(a,b));
}
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ 1664 放苹果(递归或DP)的更多相关文章

  1. poj 1664 放苹果 递归

    题目链接: http://poj.org/problem?id=1664 题目描述: 有n个苹果,m个盒子,盒子和苹果都没有顺序,盒子可以为空,问:有多少种放置方式? 解题思路: 当前有n个苹果,m个 ...

  2. poj 1664 放苹果(递推)

    题目链接:http://poj.org/problem? id=1664 放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

  3. poj 1664放苹果(递归)

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37377   Accepted: 23016 Description ...

  4. POJ 1664 放苹果 (递推思想)

    原题链接:http://poj.org/problem?id=1664 思路:苹果m个,盘子n个.假设 f ( m , n ) 代表 m 个苹果,n个盘子有 f ( m , n ) 种放法. 根据 n ...

  5. POJ 1664 放苹果

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24985   Accepted: 15908 Description ...

  6. poj 1664 放苹果 (划分数)

    题意:中文题目,不解释... 题解: 第一种方法是暴力深搜:枚举盘子1~n放苹果数量的所有情况,不需要剪枝:将每次枚举的情况,即每个盘的苹果数量,以字典序排序,然后存进set里 以此去重像" ...

  7. poj 1664 放苹果(dfs)

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 30284   Accepted: 19098 Description ...

  8. poj 1664 放苹果,递归(深度优先搜索)

    #include "stdio.h" int DFS(int n,int m); int main() { int T; int n,m; int s; scanf("% ...

  9. poj 1664放苹果(转载,不详细,勿点)(递归)

    题目和别人的解析传送门 我的代码 #include<bits/stdc++.h> using namespace std; int f(int m,int n) { ) ; ||m==) ...

随机推荐

  1. python实例2-写一个爬虫下载小功能

    主要是通过url,和re两个模块对一个网页的固定图片进行模糊匹配后下载下来. #! /usr/bin/python import re import urllib def gethtml(url): ...

  2. Redis持久化——RDB(一)

    核心知识点: 1.RDB:将当前数据生成快照保存到硬盘 2.手动触发 save:会阻塞Redis服务器直到RDB完成. bgsave:执行fork创建子进程,由子进程负责RDB操作,阻塞只发生在for ...

  3. Ubuntu12.04等的输入法问题 中英文切换 fitcx

    一般乌班图系统安装的时候会提醒大家选择安装的输入法,若大家选择中文安装,那么支持中文没得说,当选择英文安装的时候,发现整个系统环境是英文,并且根本不能输入中文,想baidu一下都是用pinyin百度, ...

  4. 【leetnode刷题笔记】Maximum Depth of binary tree

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  5. P4103 [HEOI2014]大工程

    题目 P4103 [HEOI2014]大工程 化简题目:在树上选定\(k\)个点,求两两路径和,最大的一组路径,最小的一组路径 做法 关键点不多,建个虚树跑一边就好了 \(sum_i\)为\(i\)子 ...

  6. Cisco IOS版本命名规则

    首先说说IOS的运行平台,c2500.c2600.c4500.c2950代表运行此IOS的硬件平台,例如:C2500指2500系列路由器. 其次,看看IOS的版本,IOS有主版本号:11.0.11.1 ...

  7. 剑指offer之 从尾到头打印链表

    package Problem5; import java.util.Stack; //首先定义链表结构class LinkNode{ LinkNode next; int node_value;} ...

  8. ubantu删除文件(夹)

    格式:rm -rf 目录名字 -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思 名称 rm - 移除文件或者目录 概述 rm [选项]... 文件列表... ...

  9. 数据分析第二篇:matplotlib 常用的几个绘图方法

    Matplotlib matplotlib是python的绘图库,使用它可以很方便的绘制出版质量级别的图形 matplotlib的基本功能 1.基本绘图 1.1 绘制坐标系中连续的线,设置线型/线宽/ ...

  10. Codeforces 351B Jeff and Furik:概率 + 逆序对【结论题 or dp】

    题目链接:http://codeforces.com/problemset/problem/351/B 题意: 给你一个1到n的排列a[i]. Jeff和Furik轮流操作,Jeff先手. Jeff每 ...