一.题目
编写一个程序,对输入的任意正整数n,打印出集合{0,1,…,n-1}的所有子集。
二.示例
//示例一
输入:3
输出:{
},{
0},{
1},{
0,1},{
2},{
0,2},{
1,2},{
0,1,2}
//示例二
输入:2
输出:{
},{
0},{
1},{
0,1}
三.算法思路
A:根据输入n求出子集的个数即2^n个子集
B:数组的每个元素可以有两种状态:在子数组中和不在子数组中,所有状态的组合就是所有子数组了。
例如: 输入为3,则子集合总数为2^3=8个,集合为{ 0,1,2} (说明:3位的二进制数是足够表示小于或等于2^3的十进制数的,拓展即为:n位的二进制数是足够表示小于或等于2^n的十进制数的) 8中状态分别为1~8对应的二进制(0,1的值代表原集合中对应位置上的元素是否在子集合中) 000---->{ , ,}---->{ } 001---->{ , ,2}---->{ 2} 010---->{ ,1,}---->{ 1} 011---->{ ,1,2}---->{ 1,2} 100---->{ 0, ,}---->{ 0} 101---->{ 0, 2}---->{ 0,2} 110