子集生成算法——增量构造法
2016-03-18 10:15
302 查看
思路是一次选出一个元素放入集合中
生成0~n的子集,每次选出最小的值放入集合中,通过从0递增得到下一个位置的值。#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<algorithm> using namespace std; void sutset(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;// 从剩下的数中选出最小值 sutset(n,a,cur+1); } } int main(){ int a[3]={1,2,3}; sutset(4,a,0); }
相关文章推荐
- linux下安装使用jprofiler8(tomcat)
- android 多线程下载 断点续传
- fprintf fscanf等函数的用法
- Symfony2之session与cookie用法小结
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
- Java内存与垃圾回收
- linux下如何编译c++工程项目
- 字符编码详解
- Linux系统运行级别
- docker 导入下载模板
- Android客户端与服务端交互的三种方式
- ubuntu 15.10下vim树形目录插件NERDTree安装
- 一种类型安全的Java HTTP客户端库Retrofit
- mysqlworkbench修改中文乱码的地方
- swiper 多个循环的实现
- oracle数据库服务器启动后需执行的命令(SecureCRT中执行)
- 用递归的方法算出给定字符串的最大连续重复字符的重复次数
- Robot Framework
- docker 导入下载模板
- mvc 模型验证问题总结