1. 程式人生 > >演算法--生成子集

演算法--生成子集

     當需要求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個數生成的全排列就是原子集中每個元素的存在狀態,

通過判斷存在狀態可知該子集有哪些元素。