以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 算法理论与分析 』  (http://bbs.xml.org.cn/list.asp?boardid=60)
----  如何用递归实现求一个集合的所有子集  (http://bbs.xml.org.cn/dispbbs.asp?boardid=60&rootid=&id=36592)


--  作者:jiaozi1216
--  发布时间:8/9/2006 4:02:00 PM

--  如何用递归实现求一个集合的所有子集
各位大侠,给定一个n个元素的集合,如何得到其所有的子集,用递归如何实现?
--  作者:wnn349308824
--  发布时间:8/9/2006 4:06:00 PM

--  
0代表这个元素没在集合里,1代表在..简单的递归就实现了呀
--  作者:jiaozi1216
--  发布时间:8/10/2006 9:05:00 AM

--  
能不能说的具体点,如何递归?我用的方法是n个元素的集合与[0,2^n-1]的整数一一对应然后列举所有的整数得到的。可是就是不知道递归如何实现?
--  作者:wnn349308824
--  发布时间:8/10/2006 3:48:00 PM

--  
#include <iostream>
using namespace std;
void out(int);
int m,a[100],v[100],f=0;
int main()
{

 cin>>m;
int i;
 for (i=0;i<m;i++)
 {
  cin>>a[i];
 }
 out(0);
return 0;
}
void out(int t)
{
 int i;
 if (t==m)
 {
if (f==0)
{
 cout<<"空集";
 f=1;
}
  for (i=0;i<m;i++)
  {
if (v[i]==1) cout<<a[i];
  }
  cout<<endl;
 return ;
 }
 v[t]=0;
 out(t+1);
 v[t]=1;
out(t+1);
}
我想法大概就是这个


--  作者:jiaozi1216
--  发布时间:8/13/2006 7:32:00 PM

--  
多谢了,wnn349308824
--  作者:jiaozi1216
--  发布时间:8/13/2006 7:35:00 PM

--  
楼上的方法和把集合与整数一一对应有异曲同工之秒
--  作者:417189493
--  发布时间:9/22/2006 1:49:00 AM

--  
如果懂得 格雷码
集合的子集 可以 按格雷码顺序排 0 代表位置上相对应的 数 不存在
1 代表 位置相对应的数 存在这个子集里!!
我做格雷码想到这个 感觉不是很好的办法 不过也是一种方法
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms