递归解题,题目是poj上的,http://poj.org/problem?id=1664
(1)题意:M个苹果分到N个盘子里,不考虑盘子顺序。
(2)思想:递归。①苹果数M小于盘子数,则考虑在M个盘子里放苹果。②每个盘子放一个苹果,剩下M-N个苹果随便放。一个盘子不放苹果,剩下M个苹果放在N-1个盘子里。递归操作,返回它们的和。③没有苹果或者剩一个盘子,返回1。
(3)Java实现:
package id0000_1999;
import java.util.Scanner;
public class Id1664 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt(), m, n;
for (int i = 0; i < t; i++) {
m = scan.nextInt();
n = scan.nextInt();
System.out.println(solve(m, n));
}
}
private static int solve(int m, int n) {
if (m == 0 || n == 1)
return 1;
if (m < n)
return solve(m, m);
else
return solve(m - n, n) + solve(m, n - 1);
}
}
分享到:
相关推荐
标题 "ACM.zip_ACM_poj_poj3187_poj3669" 提供的信息表明,这个压缩包包含的是与ACM(国际大学生程序设计竞赛)相关的编程题目解决方案,具体是POJ(Programming Online Judge)平台上的两道题目,编号分别为poj3187...
综合以上信息,我们可以推测这个压缩包是为了帮助用户理解和解决POJ平台上的第2775号编程挑战,重点在于理解并实现一个涉及递归的算法。学习这个题目不仅可以提高编程技巧,还能深入理解递归思想及其在实际问题中的...
【标题】"POJ.rar_poj java_poj1048" 涉及的知识点主要围绕编程竞赛中的“约瑟夫环”问题,这里是一个加强版,使用Java语言进行解决。 【描述】"POJ1048,加强版的约瑟夫问题 难度中等" 提示我们,这个问题是编程...
【标题】"POJ1753.rar_poj 1753_poj1753" 提供的资源是关于POJ1753编程挑战的解决方案,其中包括了完整的代码实现以及实验报告。POJ(Problem Online Judge)是中国大学常用的在线编程竞赛平台,它提供了一系列的...
代码中可能包含了初始化、更新和查询三个主要部分,通过迭代或递归的方式来完成树状数组的维护。同时,为了确保算法的高效性,我们需要注意树状数组的构建和操作应该尽可能地保持O(logN)的时间复杂度。 另外,...
标题中的“poj2488.rar_poj24_poj2488_方向模板法”指的是一个解决编程竞赛问题POJ2488的压缩文件,其中可能包含了解决该问题的代码示例。POJ是Programming Online Judge的缩写,是一个在线的编程竞赛平台,参与者...
3. **递归与迭代**:在解决某些问题时,可能会用到递归函数或迭代循环。 4. **字符串处理**:字符串的比较、查找、替换、拼接等操作。 5. **动态规划**:对于一些复杂度较低的动态规划问题,初学者可能会尝试解决。 ...
6. **递归和回溯**:对于一些需要搜索所有可能性的问题,如八皇后问题、N皇后问题等,递归和回溯是常用的解题策略。 7. **字符串处理**:如果问题是关于文本处理的,那么字符串操作,如模式匹配、字符串反转、子串...
此问题本质上是一个经典的组合数学问题,可以用动态规划或递归的方法来解决。 ### 题目解析 #### 问题定义 我们需要计算在给定M个苹果和N个盘子的情况下,有多少种不同的方式可以将这些苹果放入盘子中,其中每个...
8. **递归与分治**:如快速幂运算、归并排序、分治法解约瑟夫问题等。 9. **贪心算法**:适用于部分最优解的问题,如霍夫曼编码、活动安排等。 10. **回溯法与剪枝**:用于解决约束满足问题,如八皇后问题、N皇后...
10. 7113.cpp:可能与递归或回溯法有关,比如八皇后问题、N皇后问题等。 这些cpp文件代表了不同类型的算法问题,涵盖了从基础数据结构(如数组、链表)到高级算法(如动态规划、搜索算法)的广泛知识。在学习这些...
【标题】"POJ100题_C++_源码" 涉及的是C++编程语言在解决算法竞赛中的应用,尤其是针对POJ(Programming Online Judge)平台上的编程题目。POJ是一个在线的编程练习系统,它提供了一系列的算法问题供用户练习,提升...
* 递归和分治法:递归和分治法是指将问题分解成多个小问题,通过解决小问题来解决大问题,如 poj3295。 * 递推:递推是指通过前一个结果来计算当前结果的方法,如 poj1068、poj2632、poj1573、poj2993、poj2996。 * ...
2. **记忆化搜索**:结合动态规划和递归搜索(POJ3254, poj2411, poj1185)。 3. **多维动态规划**:处理多个维度的状态(poj2057, poj1947, poj2486, poj3140)。 ### 十五、进阶数学 1. **数列和级数**:数列...
* 递归和分治法:通过将问题拆分成小问题来解决,例如 poj3295。 * 递推法:通过逐步解决问题来获得最终解,例如 poj1068、poj2632、poj1573、poj2993、poj2996。 * 构造法:通过构造解来解决问题,例如 poj3295...
这种策略在poj3295这类构造法题目中尤为适用,同时也常见于递归和动态规划中。 #### 模拟法 模拟法是对题目场景的直接模拟,适用于逻辑清晰、规则明确的问题,如poj1068和poj2632。虽然这种方法直观易懂,但在...
7. poj_1029.c - "GCD Sequence":求最大公约数序列,需要理解欧几里得算法和递归思想。 8. poj_2021.c - "Fence":这道题目可能与几何和动态规划有关,要求在一定的条件下找到最佳围栏布局。 9. poj_1182.c - ...
1. 算法分类:POJ题目可以根据算法的难度和类型进行分类,例如,动态规划、贪心算法、递归算法等。 2. 题目分类:POJ题目可以根据题目类型进行分类,例如,数学题、字符串处理题、图算法题等。 3. 代码长度分类:POJ...
6. **递归与回溯**:在解决某些复杂问题时,可能会用到递归或回溯法,如八皇后问题、迷宫问题等。 7. **贪心策略**:在某些情况下,可以采用贪心算法,每次做出局部最优决策,最终达到全局最优。 8. **模拟**:...
- **递归与分治**:将大问题分解为小问题解决,如快速排序、归并排序等。 - **递推**:用递推公式解决复杂问题,如斐波那契数列。 - **构造法**:直接构造出满足条件的解,如poj3295。 - **模拟法**:按照题目...