要輸出一個數(shù)組的所有子集,可以使用遞歸的方法。
首先,定義一個函數(shù)來遞歸地生成所有子集。該函數(shù)將接收三個參數(shù):數(shù)組,當前位置和當前子集。開始時,當前位置為0,當前子集為空集。然后,遞歸地調(diào)用該函數(shù)兩次:一次是在當前位置的元素不包含在當前子集中的情況下,另一次是在當前位置的元素包含在當前子集中的情況下。遞歸的終止條件是當前位置等于數(shù)組的長度。
以下是用Java編寫的代碼示例:
import java.util.ArrayList;
import java.util.List;
public class SubsetGenerator {
public static void generateSubsets(int[] nums) {
List<Integer> subset = new ArrayList<>();
generateSubsets(nums, 0, subset);
}
private static void generateSubsets(int[] nums, int pos, List<Integer> subset) {
if (pos == nums.length) {
System.out.println(subset);
return;
}
// 不包含當前位置的元素
generateSubsets(nums, pos + 1, subset);
// 包含當前位置的元素
subset.add(nums[pos]);
generateSubsets(nums, pos + 1, subset);
subset.remove(subset.size() - 1);
}
public static void main(String[] args) {
int[] nums = {1, 2, 3};
generateSubsets(nums);
}
}
運行上述代碼,將輸出數(shù)組 {1, 2, 3} 的所有子集:
[]
[3]
[2]
[2, 3]
[1]
[1, 3]
[1, 2]
[1, 2, 3]