#include<bits/stdc++.h>
using namespace std;
int arr[25];
void print_subset(int n,int* A,int cur)
{int i;for(i=0;i<cur;i++) printf("%d ",arr[A[i]]);puts("");int s;if(cur==0) s=0;else s=A[i-1]+1;//相当于int s=cur?A[cur-1]+1:0;//当cur=0的时候,因为这是第一次进入函数,所以选取集合下标为0即可for(int i=s;i<n;i++){A[cur]=i;print_subset(n,A,cur+1);}//然后就是从当前最小的还未选择过的下标作为下一个下标集合的首元素开始选取//直到n-1的下标位置,每一次选取首下标之后都开始递归
}int main()
{int n,A[25];//数组A辅助构造,其值为升序序列的下标,注意是从0开始for(int i=0;i<25;i++) A[i]=i;scanf("%d",&n);for(int i=0; i<n; i++) arr[i] = i+1;//数组arr为1-n的值print_subset(n,A,0);return 0;
}

位向量法:

#include<bits/stdc++.h>using namespace std;void print_subset(int n,int* B,int cur)
{if(cur==n)//当判断到了最后一个元素是否存在后
    {for(int i=0;i<n;i++){if(B[i]) printf("%d ",i);}puts("");return;}B[cur]=1;//选择第cur个元素print_subset(n,B,cur+1);B[cur]=0;//不选择print_subset(n,B,cur+1);
}int main()
{int n;cin>>n;int B[100];print_subset(n,B,0);return 0;
}

转载于:https://www.cnblogs.com/Fy1999/p/8575977.html

子集生成-增量构造法||位向量法相关推荐

  1. 子集生成 增量构造法 位向量法 二进制法

    增量构造法 参考 //此算法仅仅是输出下标,实际应用应输入另一个数组来进行存储数据 //这三种方式,为了理解这个花费了最长的时间,太纠结于细节了,刘汝佳写的不是特别清楚 //这三种方式的话,都可以理解 ...

  2. 子集生成算法 之 位向量法和增量构造法

    什么是子集生成? 算法竞赛经典入门中的解释:给定一个集合,枚举所有的可能的子集. 位向量法 1.什么是位向量法? 通过构造一个标记向量pd[i],而不直接构造存放题目数据的子集A. 当pd[i]==t ...

  3. 子集生成的两种方法 (增量构造法 和 位向量法)

    该算法来自--刘汝佳的算法竞赛入门经典.书中介绍了两种算法的核心代码,但却没有逐过程详细解说,另初学者看文字时很难看懂 遇到问题,是先要直接研究问题的细节呢还是先把问题搞清楚? 我认为绝对应该先学习如 ...

  4. 计算几何入门 1.3:凸包的构造——增量构造法

    极点法和极边法的复杂度分别为O(n^4)和O(n^3),当点集S的规模稍大时就难以适用了.为了满足实际需要必须寻找更高效的算法来构造凸包. 一.减治 在引入新算法之前首先来回顾一下经典的算法思想:减治 ...

  5. 子集生成(二进制法,逐步生成,递归增量)

    子集生成的三种方法 二进制法 1.不算空集,共有2^n-1个子集 2.对应二进制数的第N为1,则将A[N]选中,否则不选 逐步生成法 对每一个元素进行处理,每一个元素都可以被选中或者不选中 递归增量构 ...

  6. lr1分析器c语言实验报告怎么写,编译原理课程的设计构造LR分析法语法分析器.doc...

    编译原理课程的设计构造LR分析法语法分析器 太 原 学 院 课程设计报告书 课程名称 设计题目 构造LR(0)分析法语法分析器 专业班级 学 号 姓 名 指导教师 2016年 12 月 15日 目 录 ...

  7. c/c++教程 - 2.4.2.1~2 对象的初始化和清理,构造函数和析构函数,构造函数的分类和调用(有参构造,无参构造,普通构造,拷贝构造,括号法,显示法,隐式转换法,匿名对象)

    目录 4.2 对象的初始化和清理 4.2.1 构造函数和析构函数 4.2.2 构造函数的分类及调用 相关教程 4.2 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候 ...

  8. 分布式--生成数据库全局唯一ID--方法/方案

    原文网址:分布式--生成数据库全局唯一ID--方法/方案_IT利刃出鞘的博客-CSDN博客 简介 本文介绍分布式项目中如何生成全局的唯一ID,通常是将其作为数据库的主键来使用的. 生成全局唯一ID有这 ...

  9. 算法竞赛入门经典读书笔记(四)7.3子集生成

    输入一个数n,输出集合0,1,2,3,n-1的全部子集 方法一:增量构造法: #include <iostream> using namespace std; void print_sub ...

最新文章

  1. “AV终结者/8749”病毒清理办法
  2. android ble从设备,从Android设备发送命令到蓝牙
  3. undolog 是binlog_msyql日志-binlog-undolog-redolog
  4. 电脑壁纸励志_励志文案丨关于学习的文案,大家加油!
  5. 瓜分60万现金大奖,云原生编程挑战赛等你来挑战!
  6. comboBox绑定数据库后SelectedIndexChanged事件出错
  7. optaplanner_OptaPlanner –具有真实道路距离的车辆路线
  8. Java 算法 麦森数
  9. 联想交换机服务器型号,联想EN1032交换机 ISL vLAG配置
  10. openwrt 问题四 9531编译解决方法
  11. Linux服务器CPU飙升排查
  12. CVPR2021论文列表(中英对照)
  13. (Android+Qt最小系统设计方案)RK3288核心板设计之软件开发环境搭建(4.0)
  14. golang快速入门[6.2]-集成开发环境-emacs详解
  15. 黑客如何入侵你的汽车?
  16. 大厂技术实现 | 爱奇艺短视频推荐业务中的多目标优化实践 @推荐与计算广告系列
  17. 【机器学习入门系列】第二章 探索性分析
  18. Android中文乱码的分析与解决
  19. 机器学习入门(03)— 激活函数分类(阶跃函数和 sigmoid 函数的理论、实现、显示以及区别、非线性函数、ReLU 函数、tanh 函数)
  20. textarea的placeholder无效问题解决

热门文章

  1. Windows Phone 8.1 应用商店将于 12 月 16 日关闭
  2. 系统检测到您正在使用网页抓取工具访问_从网站抓取数据的3种最佳方法
  3. vue用html做报表,Vue配置生成无限分割的表格,可快速实现任意复杂报表
  4. python第三周笔记_Python第四周 学习笔记(1)
  5. 多台电脑集群运算_一个分布式服务器集群架构方案
  6. java 泛型参数_[基础]-Java泛型
  7. eslint是什么_为什么eslint没有 no-magic-string?
  8. halcon 旋转_HALCON高级篇:3D相机标定
  9. es java match_java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)...
  10. 统计文件字符个数 java_如何统计个文件中的字符个数