子集生成(三种方法)
2013-08-11 16:43
246 查看
#include <iostream> #include <cstdio> #include <cmath> #include <stdlib.h> using namespace std; void print_subset1(int n,int *A,int cur) //增量构造法 { for(int i=0;i<cur;i++) printf("%d",A[i]); if(cur!=0) printf("\n"); int s=cur?A[cur-1]+1:0; for(int i=s;i<n;i++) { A[cur]=i; print_subset1(n,A,cur+1); } } void print_subset2(int n,int *B,int cur) //位向量法 { if(cur==n) { for(int i=0;i<cur;i++) if(B[i]) printf("%d",i); printf("\n"); return; } B[cur]=1; print_subset2(n,B,cur+1); B[cur]=0; print_subset2(n,B,cur+1); } void print_subset3(int n) //二进制法 { for(int i=1;i<(1<<n);i++) { for(int j=0;j<n;j++) if(i&(1<<j)) printf("%d",j); printf("\n"); } } int main() { int a[10],n; while(scanf("%d",&n)!=EOF) { system("cls"); printf("增量构造法:\n");print_subset1(n,a,0); printf("位向量法:\n"); print_subset2(n,a,0); printf("二进制法:\n");print_subset3(n); } return 0; }
相关文章推荐
- 生成所有子集的三种方法
- ACMjava子集生成的三种方法,增量构造,辅助位向量,二进制法
- 子集生成的三种方法
- 【算法学习笔记】14.暴力求解法02 子集生成的三种方法
- 【算法学习笔记】14.暴力求解法02 子集生成的三种方法
- web server使用php生成web页面的三种方法总结
- 递归枚举,子集生成,排列生成,回溯都是解决解答树的方法,通过数值跟踪保存排序过程
- 三种用PHP生成静态html文件的方法
- 三种用PHP生成静态html文件的方法
- 三种C#.net生成静态页面的方法
- 解析PHP生成静态html文件的三种方法
- 在web页面上快速生成二维码的三种实用方法
- ABAP动态生成内表的三种方法
- java生成随机数的三种方法
- php生成随机密码的三种方法小结
- 子集生成的两种方法
- C#中获取、生成随机数的三种方法
- Php 生成静态html文件的三种方法
- Axis生成wsdl的三种方法以及注意事项
- 生成pdf的三种方法差异