题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
递归: 苹果数目m,盘子数目n,f (m,n)表示m个苹果,n个盘子有多少方法
(1)m < n,必有n-m个盘子空着,则至多使用m个盘子,有f (m,m)种方法;
(2)m > n时间
a、有至少一个盘子空着,即相当于f(m,n) = f(m,n-1);
b、所有盘子都有苹果,将m-n个苹果再随意分配n个盘中,即f(m,n) = f(m-n,n).
总的放苹果的放法数目等于两者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)
b、所有盘子都有苹果,将m-n个苹果再随意分配n个盘中,即f(m,n) = f(m-n,n).
总的放苹果的放法数目等于两者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)
using System;
using System.Linq;
namespace HJ61{
class Solution{
public static void Main(){
var input = Console.ReadLine();
var data = input.Split(' ');
data = data.ToArray();
int appleNum = Convert.ToInt32(data[0]);
int planeNum = Convert.ToInt32(data[1]);
var res = count(appleNum, planeNum);
Console.WriteLine(res);
}
public static int count(int m, int n){
if(m == 0 || n == 1) return 1;
if(n > m) return count(m, m);
else return count(m, n-1) + count(m-n,n);
}
}
}


