/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/int**subsets(int* nums,int numsSize,int* returnSize,int** returnColumnSizes){/*这个题原来打算用递归回溯的 也可以
但查资料的时候发现一个位运算法
也就是用0表示没有 1 表示有 对于示例1 001
表示 【3】。所以一共有2^numsSize个结果
*/*returnSize =1<<numsSize;*returnColumnSizes =(int*)malloc(sizeof(int)*(*returnSize));**returnColumnSizes =0;//printf("%d",*returnSize);int**res =(int**)malloc(sizeof(int*)*(*returnSize));//先把【】输入到里面
res[0]=NULL;//从1 到 *returnSize进行遍历,每次查看第几位为1for(int i =1;i<*returnSize;i++){
res[i]=(int*)malloc(sizeof(int)*numsSize);
returnColumnSizes[0][i]=0;for(int j =0;j<numsSize;j++){if(1<<j&i){
res[i][ returnColumnSizes[0][i]++]=nums[j];}}}return res;}