集合子集的两种求法.(写着玩,大家看看)

heidongstar 2005-09-30 03:28:21
#include <stdio.h>

#define SIZE 3

int a[] = {1,2,3};

int status[] = {-1,-1,-1};


void next(int l)//利用组合方法直接构造子集
{
int i;
for(i=0;i<SIZE;i++)
if(status[i]!=-1)
printf("%d ",a[status[i]]);
printf("\n");
if(l==SIZE)
return;

for(i=l;i<SIZE;i++)

{
status[l] = i;
next(i+1);
status[l] = -1;

}

}

void enumit(int l)//穷举集合每个元素的状态(0或1)
{
int i;

if(l==SIZE)
{
for(i=0;i<SIZE;i++)
if(status[i] == 0)
printf("%d ",a[i]);
printf("\n");
return;
}
else
{
status[l] = 0;
enumit(l+1);
status[l] = -1;
enumit(l+1);

}


}

int main()
{

//next(0);
enumit(0);
system("PAUSE");
return 0;

}
...全文
92 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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