正整数划分集合及其划分数java代码
时间: 2024-09-22 16:01:39 浏览: 39
正整数划分集合是指将一个给定的正整数n分解成若干个非负整数的和的方案,每个整数可以任意多次出现。在计算机科学中,这种问题通常涉及动态规划算法的运用。
Java代码示例(使用递归实现):
```java
import java.util.ArrayList;
import java.util.List;
public class IntegerPartitions {
public static List<List<Integer>> integerPartitions(int n) {
List<List<Integer>> result = new ArrayList<>();
partition(n, new ArrayList<>(), result);
return result;
}
private static void partition(int num, List<Integer> current, List<List<Integer>> result) {
if (num == 0) {
result.add(new ArrayList<>(current));
return;
}
for (int i = 1; i <= num; i++) {
current.add(i);
partition(num - i, current, result);
current.remove(current.size() - 1); // 回溯,尝试下一个数字
}
}
public static void main(String[] args) {
int n = 4;
List<List<Integer>> partitions = integerPartitions(n);
System.out.println("Partitioning of " + n + ":");
for (List<Integer> part : partitions) {
System.out.println(part);
}
}
}
```
在这个例子中,`integerPartitions`函数是主入口点,它接收一个正整数n作为输入,然后通过递归调用`partition`来生成所有可能的划分组合。在`partition`函数中,我们从1开始尝试将剩余的数分成一个个子集,并记录当前的子集,然后回溯以便尝试其他分割方式。
运行这个程序会打印出4的所有正整数划分,例如 `[4]`, `[3, 1]`, `[2, 2]`, `[2, 1, 1]` 等等。
阅读全文