我正在尝试将一个数组分成N个部分,条件是每个部分都至少包含一个数字。
例如:如果将数组 [5, 10, 10, 30] 分为2(N=2)个部分,则所有可能的部分组合如下:
- 组合 #1:5 | 10, 10, 30
- 组合 #2:5, 10 | 10, 30
- 组合 #3:5, 10, 10 | 30
我的代码如下:
public static void main(String[] args) {
int[] a = { 5, 10, 10, 30 };
int maxElement = 3;
int count = 1;
while (count <= maxElement) {
printCombinations(count, a);
count++;
}
}
public static void printCombinations(int count, int[] a) {
System.out.println("start printing");
for (int index = 0; index < count; index++) {
System.out.println(a[index]);
}
System.out.println("----");
for (int index = count; index < a.length; index++) {
System.out.println(a[index]);
}
System.out.println("end printing");
}
它按预期打印组合。但我无法弄清如何将其推广到N。任何帮助都将不胜感激。
5
的数组当N=3
时,这意味着我们要用恰好3个加数将5
进行分区。 - The Scientific Methodn
是数组长度,k
是分区数。 - teppic