利用C语言求一个非空集合的所有子集,不要递归
如题,求集合的所有子集,但是不要用递归的方法。
[解决办法]
#include <stdio.h>#include <stdlib.h>#include <string.h>void printSubset(char *set, int length){ int *mark = (int*)malloc(sizeof(int)*(length+1)); int i; for(i = 0; i <= length; ++i) { mark[i] = 0; } while(mark[length] == 0) { ++mark[0]; for(i = 0; i < length; ++i) { if(mark[i] >= 2) { ++mark[i+1]; mark[i] -= 2; } } for(i = 0; i < length; ++i) { if(mark[i] == 1) printf("%c ", set[i]); } printf("\n"); } free(mark);}int main(){ char set[] = "abcd"; int length = strlen(set); printSubset(set, length); system("pause"); return 0;}
[解决办法]
递归和二进制你都否定了,于是我没辙了。。。