`

poj 1664(递归)

poj 
阅读更多

1664:放苹果

总时间限制:
1000ms
内存限制:
65536kB
描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
输出
对输入的每组数据M和N,用一行输出相应的K。
样例输入
1
7 3
样例输出
8
思考方法:
1.先分情况讨论:
设函数fun(m,n) 来计算有多少种不同的分法
(1)如果n>m ,即盘子数大于苹果数,那多出的盘子也就没存在意义了,前提是盘子都是一样的
所以我们就能得到 fun(m,n)  =  fum(m,m) ;
(2)如果n<=m ,如果有至少一个盘子不用,我们就可以得到fun(m,n) = fun(m,n-1)  ;
 若果所有盘子都有苹果,我们就可以从全部的盘子中各拿一个苹果。则fun(m,n) = fun(m-n;n) ;
 则当n<=m时,fun(m,n) = fun(m,n-1) + fun(m-n,n) ; 
2.出口情况讨论:
当n=1时,所有苹果都必须放在一个盘子里,所以返回1;
当没有苹果可放时,定义为1种放法;
递归的两条路,第一条n会逐渐减少,终会到达出口n==1; 第二条m会逐渐减少,因为n>m时,我们会return f(m,m) 所以终会到达出口m==0.
3.解决方法: G++
#include<iostream>
using namespace std;
int fun(int m,int n)
{
    if(m==0||n==1) return 1 ;
    if(n>m) return fun(m,m) ;
    else return fun(m,n-1) + fun(m-n,n) ;
}
int main()
{
  int t,x,y ;
  cin>>t ;
  while(t--){
  cin>>x>>y ;
  x = fun(x,y) ;
 cout<<x<<endl ;
  }
  return 0 ;
}
 
分享到:
评论

相关推荐

    poj2775.rar_poj_poj 27_poj27_poj2775

    poj题目2775文件子目录源代码,递归经典题目,

    史上最全poj题目分类

    史上最全poj题目分类及原题 包括:基本算法:贪心、递归、递推、枚举;基本数据结构,链表、栈;动态规划;搜索;高级数据结构:二叉搜索树、线段树、树状数组;数学:数论

    NOIP NOI 信息学竞赛 ACM-ICPC POJ(北京大学在线评测系统)刷题推荐 OI复习计划 算法大纲

    (poj1753,poj2965)(2)贪心(poj1328,poj2109,poj2586)(3)递归和分治法.(4)递推.(5)构造法.(poj3295)……中级有:(1)C++的标准模版库的应用. (poj3096,poj3007)(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,...

    poj 3295源代码

    递归实现 各种BOOL算 注意C++的判断机制

    POJ 2255 java

    3、利用递归复原二叉树(把子树看作新的二叉树) 4、后序遍历特征:后序遍历字母串 自右至左 依次为: 最外层(总树,设为第0层)右子树的根,内1层右子树的根,内2层右子树的根….内n层右子树的根,内n层左子树的根...

    POJ滑雪问题

    POJ上1088号的滑雪问题,需要的赶紧收藏了吧。递归典范

    poj]滑雪问题

    poj acm通过的水题 完美动态规划和递归的应用,欢迎查看分享

    递归分形java

    递归分形,java课程,一个小程序关于树形的动态演示。是两个源文件在一个.txt文件上需要重新复制黏贴建立两个java文件再使用。

    acm pku spoj sgu 经典 图论题解题报告

    poj 2230 递归求欧拉回路 poj 2985 bst模板 poj2723 2-sat验证,二分答案 poj2455 dinic (ek会超时) hdu1689 求最小奇数环 poj2391 isap最快,dinic不减枝会超时 poj2455 isap 最快(ek会超时) poj2832 并查集边的...

    北大oj 题目分类

    (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,...

    程序员必须掌握哪些算法_介绍

    一.基本算法:枚举. (poj1753,poj2965)贪心(poj1328,poj2109,poj2586)递归和分治法

    C语言数据结构递归之斐波那契数列

    因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归。然后就打算先做另一道递归的题(从数组中取出n个元素的组合),但是同样...

    poj-solve:算法练习

    Algorithm-Java Algorithms + Data Structures = Programs....最短路径(dijkstra,bellman-ford,floyd,heap+dijkstra)(,,poj1062,poj2253,poj1125,poj2240) 最小生成树(prim,kruskal)(p

    经典动态规划合集_牛人 树形,压缩 老题

    典型的动态规划,用递归下的记忆化搜索来实现 1088 POJ 动态规划加速原理之四边形不等式 基于连通性状态压缩的动态规划问题 对一些DP题目的小结 树型动态规划 树型动态规划和状态压缩动态规划 算法导论第15章-动态...

    清华大学 张昆玮 《统计的力量》

    POJ上的某题,时限很紧…… 大家都用树状数组,但是有人只会用线段树呢? 而且我可以轻易改出一道不能用树状数组的题 在线段树一次次TLE后,有一个ID发帖抱怨 “下次写一个汇编版非递归线段树,再超时?” 可是大家...

    leetcode打不开-codeBook:为了好玩,永远

    poj 的代码。 所有 C++ 代码。 bfs.cpp:我的 poj 3984 解决方案。最短路径的 BFS,并递归地追溯路径。 解决这个问题我想起了很多:如何定义mutli-dim vector,如何定义队列,如何定义struct数组,如何定义方向,...

    leetcode中国-MyAlgorithmSolutions::balloon:记录我所有的算法/数据结构

    leetcode中国 MyAlgorithmSolutions 记录我所有的算法/数据结构 目录 点击打开目录 笔记 数据结构 算法(第四版) 大一题目 HDOJ LeetCode 程序员面试金典 剑指OFFER PAT 甲级 ...POJ ...栈/递归 清华oj入门

    挑战程序设计竞赛(第2版)

    2.1.1 递归函数 2.1.2 栈 2.1.3 队列 2.1.4 深度优先搜索 2.1.5 宽度优先搜索 2.1.6 特殊状态的枚举 2.1.7 剪枝 2.2 一往直前!贪心法 2.2.1 硬币问题 2.2.2 区间问题 2.2.3 字典序最小问题 2.2.4 其他例题 2.3 记录...

    leetcode2sumc-coding:用C++编码

    递归 排列:#、# 哈希 二和:# 同构字符串:# 注意:构建堆,O(n); 提取根并重建 O(logn) 从数据流中查找中位数:# 合并 k 个排序的数组/列表:# 链表 #,# 树 遍历:前序、中序、后序、水平 同一棵树:#[./...

    cpp-算法精粹

    AlgoHub囊括了 POJ, ZOJ, leetcode, HackerRank 等网站的经典题目(一些质量不高的题目则忽略),且 AlgoHub有非常简单的加题系统,用户不需要写一行代码即可自己添加题目,所以AlgoHub的题库还在飞速增长中。...

Global site tag (gtag.js) - Google Analytics