/*递归思想*/ import java.util.*; public class Main{ public static void main(String[] arg){ Scanner s=new Scanner(System.in); while(s.hasNextLine()){ String[] strArr=s.nextLine().split(" "); if(Integer.valueOf(strArr[0])>=0&&Integer.valueOf(strArr[0])<=10&& Integer.valueOf(strArr[1])>=1&&Integer.valueOf(strArr[1])<=10){ System.out.println(seperate(Integer.valueOf(strArr[0]),Integer.valueOf(strArr[1]))); } } } public static int seperate(int m,int n){ if(n==1||m==0){ return 1; } if(m<n){ return seperate(m,m); } return seperate(m,n-1)+seperate(m-n,n); } } /*动态规划*/ import java.util.Scanner; public class Main { public static void main(String[] arg) { Scanner s = new Scanner(System.in); while (s.hasNextLine()) { String[] strArr = s.nextLine().split(" "); if (Integer.valueOf(strArr[0]) >= 0 && Integer.valueOf(strArr[0]) <= 10 && Integer.valueOf(strArr[1]) >= 1 && Integer.valueOf(strArr[1]) <= 10) { System.out.println(seperate(Integer.valueOf(strArr[0]), Integer.valueOf(strArr[1]))); } } } private static int seperate(int m, int n) { int[][] result = new int[m + 1][n + 1]; for (int i = 0; i < m + 1; i++) { result[i][1] = 1; result[i][0] = 0; } for (int j = 0; j < n + 1; j++) { result[0][j] = 1; result[1][j] = 1; } for (int i = 2; i < m + 1; i++) { for (int j = 2; j < n + 1; j++) { if (i < j) { result[i][j] = result[i][i]; } else { result[i][j] = result[i][j - 1] + result[i - j][j]; } } } return result[m][n]; } }