求集合的子集
来源:互联网 发布:电脑如何装mac系统 编辑:程序博客网 时间:2024/05/22 05:30
输出一个集合的所有子集,也就是一个集合的所有组合(你想到了什么?)。也有递归的解法,这里的递归思想就是:n个数,每个数取或不取, f(判断第i个数) { 递归的终止: 若n个数都判断完(i>=n),即判断完每个元素是否取在这个集合中,输出刚才所取的数,返回。 递归的循环: 否则: 此集合不取第i个数, f(判断第i+1个数) 此集合取第i个数, f(判断第i+1个数) } #include <stdio.h> void subset (char * set, int * mask, int size, int c) { int i;if (c == size) // c和size相等时找到子集,并打印子集{ /* we get a result, output it */printf ( "{ "); for (i = 0; i < size; i++)if (mask[i] == 1) printf ( "%c ", set[i]); printf ( "}\n "); } else // 否则, 将求子集分割为求含有第C个元素的子集和没有含第C个元素的子集, 这样反复递归{ /* select the cth element */mask[c] = 1; /* process the remainning elements */subset (set, mask, size, c + 1); /* unselect the cth element */mask[c] = 0; /* process the remaining elements */subset (set, mask, size, c + 1); } } //你要注意的是mask的作用, 它起到一个屏蔽的作用, 当mask==0时,不打印int main () { char set[] = { 'a', 'b', 'c','d'}; int mask[4]; subset (set, mask, 4, 0); getch();//可要可不要return 0; }
0 0
- 求集合的子集
- 求集合的子集
- 求集合的子集
- 求集合的子集
- 求集合的子集
- 求集合的子集
- 求集合的全部子集
- 求集合的所有子集
- 求集合子集的算法
- 求集合的所有子集
- 求一个集合的子集
- 求集合的所有子集
- 求集合的所有子集
- 求集合的所有子集
- 求一个集合的子集,子集元素数目固定
- 求集合的所有子集的算法
- 求集合的所有子集的算法
- 用递归方法求集合的子集
- Android-加载图片OOM总结
- 第二学期第八周项目2--实现Time类中的运算符重载
- 各种数据库限制结果集行数总结
- How to access Dropbox from the command line in Linux
- vs2010 安装openssl
- 求集合的子集
- eclipse添加git工具
- IOC和AOP的一些基本概念
- Interesting facts about Fedora Linux
- 字符串的组合[算法]
- Android Debug 命令实践
- webrtc从入门到深入---02
- POJ 1456 Supermarket
- 写一个求x、y的平方和的平方根的函数,并在main中执行