[size=medium][b]递归解题,题目是poj上的,http://poj.org/problem?id=1664
[/b][/size]
[size=medium][b](1)题意:M个苹果分到N个盘子里,不考虑盘子顺序。
(2)思想:递归。①苹果数M小于盘子数,则考虑在M个盘子里放苹果。②每个盘子放一个苹果,剩下M-N个苹果随便放。一个盘子不放苹果,剩下M个苹果放在N-1个盘子里。递归操作,返回它们的和。③没有苹果或者剩一个盘子,返回1。
(3)Java实现:[/b][/size]
[/b][/size]
[size=medium][b](1)题意:M个苹果分到N个盘子里,不考虑盘子顺序。
(2)思想:递归。①苹果数M小于盘子数,则考虑在M个盘子里放苹果。②每个盘子放一个苹果,剩下M-N个苹果随便放。一个盘子不放苹果,剩下M个苹果放在N-1个盘子里。递归操作,返回它们的和。③没有苹果或者剩一个盘子,返回1。
(3)Java实现:[/b][/size]
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);
}
}