算法--生成子集

来源:互联网 发布:杰森斯坦森 知乎 编辑:程序博客网 时间:2024/05/01 05:47

     当需要求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个数生成的全排列就是原子集中每个元素的存在状态,

通过判断存在状态可知该子集有哪些元素。

0 0
原创粉丝点击