给你一个整数数组 nums
,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
#include <stdio.h>
#include <stdlib.h>
#include "string.h"
int path[100];
int top=0;
void dfs(int nums[],int startIndex,int numSize)
{
for (int i = 0; i < top; ++i) {
printf("%d ",path[i]);
}
printf("\n");
if (startIndex >= numSize)
return;
for (int i = startIndex; i < numSize; ++i) {
path[top++] = nums[i];
dfs(nums,i+1,numSize);
top--;
}
}
int main()
{
int nums[3]={1,2,3};
dfs(nums,0,3);
return 0;
}