将数字N拆分为K个不同的数字


说明:

将数字N拆分为K个不同的数字一共有多少种不同的方法?

Java代码模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

public class 数字拆分 {

public static void main(String[] args) {
System.out.println(slove(2022,10));
}

/**
* 将数字N拆分为K个不相同的正整数之和,一共有多少种不同的方法?
* @param num 需要拆分的数字
* @param k 需要拆分为多少个
* @return
*/
public static long slove(int num,int k){
long bp[][] = new long[num+1][k+1];
bp[0][0]=1;
for(int i =1 ; i <= num ; ++i){
for(int j =1; j <=k ; ++j){
if(i>=j)
bp[i][j] = bp[i-j][j] + bp[i-j][j-1];
}
}

return bp[num][k];
}
}