数字n的所有子集
2016-03-26 18:41
337 查看
描述
由键盘输入数字n(1<=n<=9),输出由数字1至n构成的所有子集(不含空集)
输入格式
一个整数n
输出格式
输出由数字1至n构成的所有子集,先按元素个数,同个数情况按字典序输出 每一个数字后,有一个空格分隔
输入样例
3
输出样例
1 2 3 1 2 1 3 2 3 1 2 3
Hint
集合元素无顺序,{1,2,3}与{2,1,3}或{3,2,1}都视为相同的子集,只输出元素按序的{1,2,3}------------------------------------------------------------------
#include<iostream> using namespace std; int n; int rec[10]={0}; void print() { for(int i=1;i<=n;i++) if(rec[i])//输出非零元素 cout<<i<<" "; cout<<endl; } //cur:当前有几位 //pos:记录rec数组内有几个非零元素 void dfs(int num,int cur,int pos) { if(num>n||pos>=cur) return; rec[num]=1;pos=pos+1; if(pos==cur)//找到cur个数字,输出 print(); else dfs(num+1,cur,pos); rec[num] = 0;//以num开头的cur位子集全部找到,清空num dfs(num+1,cur,pos-1); } int main() { int i,j; cin>>n; for(int i = 1; i <=n; i++){//枚举子集位数 dfs(1,i,0); } return 0; }
相关文章推荐
- Delphi操作Unicode字符
- oracle 服务的开启 和 关闭
- nginx下yaf路由始终定位到index/index/index下的解决方法
- 第四周学习进度
- HDU4725 The Shortest Path in Nya Graph dij
- Windows平台安装OpenCV-2.4.9,利用Eclipse、MinGW构建C++调用OpenCV开发环境
- java关键字浅析
- think python学习心得-(5)迭代与字符串的使用
- 2.四则运算03
- mysqlbinlog 查看具体的sql语句 (binlog_format=row模式)
- [面试] C/C++ 语法细节拾遗
- 第一个多边形
- 【Educational Codeforces Round 10B】【简单脑洞】z-sort 数列重排 奇小偶大
- Jackson实现Object对象与Json字符串的互转
- 如何获取短信信息(二)
- 浅谈Mental Ray渲染引擎并行性机制
- 导航栏透明
- 单元测试(2)
- (java) 四则运算(三)
- SQL语句删除所有表