演算法--生成子集
阿新 • • 發佈:2018-12-30
當需要求1~n內的整數集的所有子集時,我們首先例舉一個n=3,它的所有元素有:1,2,3.。依次稱為第一、二、三個元素,看它的生成子集有何規律:
{1,2,3};三個元素都有;
{1,2};有前兩個元素;
{1,3};有第一、三個元素,第二個元素沒有;
{2,3};第一個元素沒有,有後兩個元素;
{1};只有第一個元素;
{2};只有第二個元素;
{3};只有第三個元素;
{}。都沒有。
用0表示有,1表示沒有,依次描述上面的子集:
1,1,1; 這是1,1,1的全排列
-------------------------
1,1,0;
1,0,1; 這是1,1,0的全排列
0,1,1;
-------------------------
1,0,0;
0,1,0; 這是1,0,0的全排列
0,0,1;
-------------------------
0,0,0; 這是0,0,0的全排列
即:陣列int *arr=new int[n]中不同的0、1個數生成的全排列就是原子集中每個元素的存在狀態,
通過判斷存在狀態可知該子集有哪些元素。