思路:
int arr = ;
遞迴遍歷整個陣列,遍歷到第0個位置,我們就求出含有0的所有子集,遍歷到第1個位置,我們就求出含有1不含0的所有子集,依次類推,遍歷到第3個位置,我們求出含有3而不含0 1 2 的所有子集。
//loc表示當前位置 loc == len為遞迴終止條件
void getallsubset(int* arr, int len, int loc, vector>&res, vectorv)
//2中情況 第一種情況 拿當前元素 第二種 不拿當前元素
getallsubset(arr, len, loc + 1, res, v);
v.push_back(arr[loc]);
getallsubset(arr, len, loc + 1, res, v);
}int main()
; vector>res;
for (int i = 0; i < 5; i++)
//以下為輸出結果用
for(int i = 0; i < res.size(); i++)
cout << endl;
} cout << res.size();
return 0;
}
求集合子集問題
src是源資料集合,currentindex是在源集合裡的當前下標,length為源集合的大小,dest是結果集合,num是結果集合的元素個數,初始化時,結果集合要和源集合的個數相等.void match int src,intcurrentindex,intlength,int dest,intn...
集合子集問題
集合子集問題 給的乙個集合按元素個數列出所有列出所有集合子集,如 0個元素 1個元素 2個元素 3個元素 輸出 方法 採用乙個二進位制數列表示解,如 000 代表 100 代表 演算法 1 乙個字串陣列儲存解。2 用乙個整形陣列儲存不同元素個數解應反正字串陣列中得位置。include include...
排列 組合 子集合
1.陣列中元素的全排列 lintcode 思路 1.對陣列進行排序 2.列舉每乙個位置上選擇什麼數字 3.跳過重複的元素 class solution for int i 0 i n i vector int permuteunique vector s 2.陣列中元素的組合 思路 列舉每個數字選擇...