把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
注意:5、1、1 和 1、5、1 是同一种分法,即顺序无关。
import java.util.Scanner;
public class Main {
public static void main(String[]args){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
int m = scan.nextInt();
int n = scan.nextInt();
int [][] dp = new int[m+1][n+1];
for(int j=1;j<=n;j++) {
dp[0][j] = 1;
dp[1][j] = 1;
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(j<=i){//苹果比盘子多
dp[i][j] = dp[i][j-1] + dp[i-j][j];
}else{//苹果比盘子少
dp[i][j] = dp[i][i];
}
}
}
System.out.println(dp[m][n]);
}
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int m = sc.nextInt();
int n = sc.nextInt();
System.out.println(fun(m, n));
}
}
public static 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);
}
}