欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

子集生成

程序员文章站 2024-03-21 19:24:28
...

子集生成

1、增量构造法

void print_subset(int n,int *A,int cur){
	for(int i=0;i<cur;i++)
	printf("%d ",A[i]);
	printf("\n");
	int s=cur?A[cur-1]+1:0;
	for(int i=s;i<n;i++){
		A[cur]=i;
		print_subset(n,A,cur+1);
	}
}

2、位向量法

void print_subset(int n,int *B,int cur){
	if(cur==n){
	for(int i=0;i<cur;i++)
	if(B[i])
	printf("%d ",i);
	printf("\n");
	}
	B[cur]=1;
	print_subset(n,B,cur+1);
	B[cur]=0;
	print_subset(n,B,cur+1);
}

上一篇: 带头双向循环链表

下一篇: