今天写了递归求子集程序

原创 2004年07月13日 21:10:00

原来对算法理解太弱了,就没有思路的


// generate all subsets of n elements

#include <iostream.h>

// define globals
int x[20],  // subset vector
    n;      // number of elements

void Subsets(int i)
{// Output all subsets of x[1:n].
 // Only x[i:n] to be changed.
   if (i == n) {// x[n] can be 0 or 1
                // output subset without element n
                x[n] = 0;
                for (int j = 1; j <= n; j++)
                   cout << x[j] << " ";
                cout << endl;
               
                // output subset with element n
                x[n] = 1;
                for (j = 1; j <= n; j++)
                   cout << x[j] << " ";
                cout << endl;
                return;
                }
               
    // leave element i out
    x[i] = 0;
    // generate all subsets with i out
    Subsets(i+1);
               
    // put element i into subset
    x[i] = 1;
    // generate all subsets with i included
    Subsets(i+1);
}
 
void main(void)
{
   n = 4;
   Subsets(1);
}

 

这方面需要加强锻炼的

使用递归求出一个集合的所有子集

想一下,平时如果给你1,2,3,4四个数,让你写出它的所有子集,你会怎么做? 我想大部分人的思路是先写出子集中只含有一个元素的子集:1;2;3;4。然后考虑子集中含有两个元素的子集:1,2;1,3;...
  • nkuhjp
  • nkuhjp
  • 2016年09月21日 21:05
  • 3588

巧用递归求字符串的子集

集合中的所有元素对于每一个子集来说,都有两种可能性:在子集中或是不在子集中。 各个元素的这两种可能性组合起来,组成了一个集合的所有子集。这也是每一个集合都有2^n个子集的原因所在。 比如 char...
  • Pwiling
  • Pwiling
  • 2016年01月25日 18:04
  • 1737

两种求集合所有子集的方法

假设我们有一个求集合的全部子集(包含集合自身)的需求,即有一个集合s,包含两个元素 ,则其全部的子集为. 不难求得,子集个数sn与原集合元素个数n之间的关系为:sn=2^n-1。   本文分别讲述两种...
  • yusiguyuan
  • yusiguyuan
  • 2014年09月18日 08:12
  • 2091

求一个集合的所有子集问题

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/31042651 作者:小马 一个包含n个元素的集合,求它的所有子集...
  • fdsafwagdagadg6576
  • fdsafwagdagadg6576
  • 2016年08月09日 11:43
  • 538

求一个集合的所有子集问题

一个包含n个元素的集合,求它的所有子集。这种问题一般有两种思路,先说说第一种,递归。递归肯定要基于一个归纳法的思想。...
  • pony_maggie
  • pony_maggie
  • 2014年06月15日 21:44
  • 17327

求集合的所有子集的算法

求集合的所有子集的算法对于任意集合A,元素个数为n(空集n=0),其所有子集的个数为2^n个如集合A={a,b,c},其子集个数为8;对于任意一个元素,在每个子集中,要么存在,要么不存在,对应关系是:...
  • yzl20092856
  • yzl20092856
  • 2014年10月11日 15:30
  • 2206

输出一个集合的幂集(所有子集)

问题描述:如一个抽象集合{1,2,3},它的所有子集包括{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}共2的n次方个,此问题又叫求集合的幂集。 一、递归实现   ...
  • zp_diandiandidi
  • zp_diandiandidi
  • 2017年03月18日 15:40
  • 471

子集生成的三种方法

子集生成的三种方法 最近遇到一个子集生成的题  没有很快的写出来  所以在把之前的过的子集生成方法在复习一边 第一种  增量构造法 在lrj紫书中  这是放到第一个讲解的 。。。。。。 顾名...
  • liyanfeng1996
  • liyanfeng1996
  • 2016年10月15日 11:19
  • 445

C++_子集生成算法汇总

增量构造算法每次递归选取一个值放入到集合中,每次递归也输出一遍 递归结束就是无法向集合中添加元素时#include using namespace std; //cur用于确定子集的大小 void...
  • a7055117a
  • a7055117a
  • 2015年09月12日 10:16
  • 1137

请编写一个方法,返回某集合的所有非空子集。

给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。  测试样例:[123,456,7...
  • qq_17034717
  • qq_17034717
  • 2016年05月18日 11:57
  • 244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:今天写了递归求子集程序
举报原因:
原因补充:

(最多只允许输入30个字)