题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 // while (in.hasNextInt()) { // 注意 while 处理多个 case // int a = in.nextInt(); // int b = in.nextInt(); // System.out.println(a + b); // } int m = in.nextInt(); int n = in.nextInt(); //动态规划 // int[][] dp = new int[m + 1][n + 1]; // for (int i = 0; i <= n; i++) { // dp[0][i] = 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][j - 1]; // } // } // } // System.out.print(dp[m][n]); System.out.print(count(m, n)); } private static int count(int m, int n) { if (m == 0 || n == 1) { return 1; } if (m >= n) { return count(m, n - 1) + count(m - n, n); } else { return count(m, n - 1); } } }