求含有n个元素的集合的幂集(清华的数据结构严蔚敏、吴伟民编)

yuanye2008 2004-10-15 12:43:00
求含有n个元素的集合的幂集(清华的数据结构严蔚敏、吴伟民编)
例如:A = {1, 2, 3}
他的解决方法是构造一颗满二叉树,
他将这棵树称为状态树,并分析得到求结果的
过程就是先序遍历这颗状态数的过程。
问题:
1、我没有理解他的分析,谁能帮我分析一下
2、如何用C++实现,如何构造这棵二叉树
另有重谢!
...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanye2008 2004-10-18
  • 打赏
  • 举报
回复
努力一下!
jp1984 2004-10-18
  • 打赏
  • 举报
回复
就是回朔算法
你构建的那棵树就是你的解空间
你再搜索空间就可得出所有解
yuanye2008 2004-10-18
  • 打赏
  • 举报
回复
非常感谢楼上的大哥!!!
意思明白了!不过还有两个问题:
1、这棵树是自底向上构建的吗(即先知道结果,然后构建)?
2、这类问题该如何选择解决方法,更主要的是如何解决,如何建模?
nwpulipeng 2004-10-15
  • 打赏
  • 举报
回复
帮顶混分
shadowstar 2004-10-15
  • 打赏
  • 举报
回复
什么叫“幂集”?
yuanye2008 2004-10-15
  • 打赏
  • 举报
回复
努力一下!
yuanye2008 2004-10-15
  • 打赏
  • 举报
回复
努力打好基础!
yuanye2008 2004-10-15
  • 打赏
  • 举报
回复
小弟明年才开数据结构的课,现在在自学
请各位前辈多多指点!
kobefly 2004-10-15
  • 打赏
  • 举报
回复
字符串求子集的
递归实现
你参考一下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define N 20
int used[N];

void output(char *str);
int diver(char *str, int len, int index);

int main( void )
{
char input[20];
int len;

printf("Please enter a string:");
while(fgets(input, 20, stdin) == NULL || input[0] == '\n')
{
printf("Input error!\n");
printf("Please enter a string again:");

}
input[strlen(input) - 1] = '\0';
len = strlen(input);
diver(input, len,0);

return 0;
}

int diver(char *str, int len, int index)
{
if(index >= len)
output(str);
else
{
used[index] = 1;
diver(str, len, index + 1);
used[index] = 0;
diver(str, len, index + 1);

}

return 0;
}

void output(char *str)
{
int i;

printf("{");
for(i = 0;i < N; i++)
if(used[i])
printf("%c",str[i]);
printf("}");
printf("\n");
}

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧