『模板』 子集生成

两种方法:

1.增量构造法

2.位向量法

(ps:懒得分开写就写一起了)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int zh[1001];//用于法一
 4 bool xl[1001];//用于法二
 5 void print(int s[],int n){
 6     for(int i=0;i<n;i++)  //用于法二
 7     if(xl[i]) cout<<s[i]<<‘ ‘;
 8     cout<<endl;
 9 }
10 void ps1(int s[],int n,int pos=0){
11     for(int i=0;i<pos;i++){        //法一
12         cout<<zh[i]<<" ";
13     }
14     cout<<endl;
15     int m=pos ? zh[pos-1]:0;
16     for(int i=0;i<n;i++){
17         if(s[i]>m){
18             zh[pos]=s[i];
19             ps1(s,n,pos+1);
20         }
21     }
22 }
23 void ps2(int s[],int n,int pos=0){
24     if(pos==n){
25         print(s,n);//法二
26         return 0;
27     }
28     xl[pos]=1;
29     ps2(s,n,pos+1);
30     xl[pos]0;
31     ps2(s,n,pos+1);
32 }
33 int main(){
34     int d[30000];
35     int n,r;
36     cin>>n>>r;
37     for(int i=0;i<n;i++){
38         d[i]=i+1;
39     }
40     ps1(d,n);
41     ps2(d,n);
42     return 0;
43 }

还有一种二进制法由于我不会某些原因以后懒得补上

先献上图片

原文地址:https://www.cnblogs.com/luv-letters/p/8480862.html

时间: 2025-02-01 04:48:34

『模板』 子集生成的相关文章

【模板】子集生成 二进制法

此文为博主原创,转载时请通知博主,并把原文链接放在正文醒目位置. 子集生成问题:给出一个正整数n,输入含有1~n共n个元素的集合的所有子集. 模板代码(qwq表示空集): 1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 6 inline void read(int &x) 7 { 8 char ch = getchar(),c = ch;

『模板』快速排序

方法一 #include<bits/stdc++.h> using namespace std; void qs(int R[],int l,int r){ int p=R[l]; int i=l,j=r; while (i<=j){ while (R[i]<p) i++; while (R[j]>p) j--; if(i<=j) swap(R[i++],R[j--]); } if(l<j) qs(R,l,j); if(i<r) qs(R,i,r); } i

『模板 高精度计算』

高精度计算 在计数类题目或者有些最优解题目中,需要输出的答案很可能会爆\(longlong\),这时候就需要用到高精度了.高精度计算较为简单,不再讲解,以下给出辅助常用的高精度计算模板:支持正整数的加,减,乘运算,读入输出,比较,以\(1e8\)压位计算,结构体封装. \(Code:\) #include<bits/stdc++.h> using namespace std; const int base=1e8,Maxlen=1e4; struct bign { int d[Maxlen],

子集生成模板、

1 //子集生成算法:给定一个集合,枚举所有可能的子集. 2 //为了简单起见,讨论的方法中没有重复元素 3 4 //增量构造法 5 #include<cstdio> 6 #include<cmath> 7 void print_subset(int n,int* A,int cur) 8 { 9 for(int i = 0 ; i < cur; ++i) printf("%d",A[i]); 10 printf("\n"); 11 i

『ENGLISH』

以A字母开头的词汇 英文 中文 abstract module 抽象模组 access 访问.存取 access control 存取控制 access control information 存取控制资讯 access mechanism 存取机制 access rights 存取权限 accessibility 无障碍性 accessibility information 无障碍网页资讯 accessibility problem 无障碍网页问题 accessible 无障碍的 access

『数据库』随手写了一个 跨数据库 数据迁移工具

随手写了一个 跨数据库 的 数据迁移工具:>目前支持 SQLServer,MySql,SQLite: >迁移工具 可以自动建表,且 保留 主键,自增列: >迁移工具 基于 Laura.Source  ORM框架 开发: >迁移工具 支持 崩溃恢复(重启迁移工具,将会继续 未完成的 数据迁移): >每张表一个事务(即使  表中有 >100W 的数据,也是一个事务完成): >迁移后 的 自增列 和 原数据库 保持一致: 只是展示一下,直接上图片: 操作工具: 迁移工具

谈谈前端『新』技术

技术这个行当,永远会有新东西出来,不进则退.更关键的是,前端比起整个软件工程乃至计算机科学体系来说,是个相对新生草莽的领域,近年来前端生态的发展其实都是在向其他领域吸收和学习,不论是开发理念.工程实践还是平台本身(规范.浏览器).所谓的『根正苗红』的前端,不过是整个发展进程中探索的一个阶段而已,那个时代的最佳实践,很多到今天都已经不再适用.过往的经验固然有价值,但这些经验如果不结合对新事物本身的了解,就很难产生正确的判断.这里需要强调的是,学习新事物并不是为了不考虑实际需求的滥用,而是为了获取足

【转载】虫师『性能测试』文章大汇总

虫师『性能测试』文章大汇总 为了方便阅读,我重新整理本文,将包含本博客所有与性能测试有关的内容. ------------------------------------------- 近两年市面上的性能测试书籍很多了,但大部分书都在讲loadrunner的操作技巧项目与项目实践.我不认为有什么问题,因为loadrunner性能测试工具已经占据很大市场.loadrunner是非常的强大,但我们在做性能测试时,往往都以“loadrunner的模式”在思考如何进行性能测试.loadrunner只是一

『转』数学专辑

1.burnside定理,polya计数法 这个大家可以看brudildi的<组合数学>,那本书的这一章写的很详细也很容易理解.最好能完全看懂了,理解了再去做题,不要只记个公式. *简单题:(直接用套公式就可以了) pku2409 Let it Bead   http://acm.pku.edu.cn/JudgeOnline/problem?id=2409 pku2154 Color http://acm.pku.edu.cn/JudgeOnline/problem?id=2154 pku12