幂集(C++)

终其一生,你在追求什么?

——2024年6月16日11:56


题目描述

        给定正整数n(n≥1),给出求{1~n}的幂集,例如,n=3时,{1,2,3}对应的幂集合为{{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}},输出不分顺序。

题解思路

        归纳法+迭代法

本题和我的上一篇博客:全排列的C++实现-CSDN博客解题思路相似,可以参考一下。

1. 当n=1时,{1}对应的幂集{{},{1}};

2. 当n=2时,{1,2}对应的幂集{{},{1}}∪{{2},{1,2}};

3. 当n=3时,{1,2,3}对应的幂集是{{},{1},{2},{1,2}}∪{{3},{1,3},{2,3},{1,2,3}};

……

规律是什么?

当n=2时,2的幂集是在1的幂集中插入了元素2之后再与1的幂集并起来的;

当n=3时,3的幂集是在2的幂集中插入了元素3之后再与2的幂集并起来的;

代码思路

1. 对于n=1时,可直接将其初始化为{{},{1}}并直接输出,当n大于1时则再1的基础上不断更新;

2. 数字每增加1,就需要在上一次的结果中逐个遍历并插入当前数字,比如,当n=2时,在已经初始化之后的结果{{},{1}}中逐个遍历并插入数字2,得到{{2},{1,2}},在将结果插入到{{},{1}}中得到{{},{1},{2},{1,2}}以便下次更新插入3;

那么请根据代码思路自己实现一下吧!

方式一:非递归实现

vector<vector<int>> getMiji(int n){vector<vector<int>> res = {{}, {1}};if(n == 1){return res;}for(int i = 2; i <= n; i++){vector<vector<int>> tmp = res;for(auto e:tmp){e.push_back(i);//对上次的结果插入当前数字res.push_back(e);//更新结果}}return res;
}

方式二:递归实现

vector<vector<int>> getMiji(vector<vector<int>> &res, int n){if(n == 1){return {{}, {1}};}res = getMiji(res, n-1);vector<vector<int>> tmp = res;for(auto e:tmp){e.push_back(n);res.push_back(e);}return res;
}

结果展示

题目变式

        如果对给定的集合求幂集呢?比如给定一个集合为{2,4,6},怎么求它的幂集,欢迎大家积极尝试,本题为LeetCode78题,附递归代码如下:

// 获取指定集合中的幂集
#include<iostream>
#include<vector>using namespace std;vector<vector<int>> getMiji(vector<vector<int>> &res, vector<int> &v, int len){// len是v的初始长度if(len == 1){return {{}, {v[0]}};}res = getMiji(res, v, len - 1);vector<vector<int>> tmp = res;for(auto e:tmp){e.push_back(v[len-1]);res.push_back(e);}return res;
}int main(){vector<int> v = {2, 4, 6};vector<vector<int>> res;res = getMiji(res, v, 3);for(auto e:res){for(auto m:e){cout<<m<<'\t';}cout<<endl;}cout<<"幂集中的元素个数为"<<res.size()<<"个";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FlowUs项目经理初体验

作为一名项目经理&#xff0c;FlowUs可以作为一个强大的工具来帮助我管理项目的所有方面&#xff0c;从规划到执行再到监控和回顾。 FlowUs息流是什么&#xff1f;FlowUs息流是一款集文档、多维表、文件夹等功能于一体的新一代知识管理与协作平台 以下是一些使用FlowUs作为项…

streamlit markdown里支持latex公式显示

参考&#xff1a; https://docs.streamlit.io/develop/api-reference/write-magic/st.write https://discuss.streamlit.io/t/streamlit-markdown-a-streaming-markdown-component-with-latex-mermaid-table-code-support/72187 也有独立支持的st.latex 接口单独显示公司&…

AI绘画Stable Diffusion 保姆级教程,让AI人物轻松打光的种方法,我不允许你还不会!

大家好&#xff0c;我是画画的小强 我们常常听到这样的观点&#xff1a;光影&#xff0c;如同摄影的精髓&#xff0c;为图像赋予难以抗拒的质感和情感深度。 用AI生成的图片为什么总是觉得比较“假”&#xff0c;主要还是光影不足&#xff01; 今天我将一一解析多种光影调控…

使用 final 修饰一个变量时,是引用不能变还是引用的对象不能变?

在 Java 中&#xff0c;使用 final 关键字修饰一个变量时&#xff0c;表示这个变量的引用不能改变&#xff0c;即一旦初始化之后&#xff0c;不能再指向其他对象。但是&#xff0c;这并不意味着引用所指向的对象本身是不可变的。该对象的内容仍然可以被修改。 详细解释 引用不…

RemObjects教程

File—Other…—RemObjects Data Abstract—ComboServer Step(1) 在出现的 NewRemObjects SDK Server 对话框中 Project Folder &#xff1a;文件存档路径 Project Name &#xff1a;工程名称 Also-Create a matching client application and a project group&#xff1a;在创…

C#——文件读取FileStream类详情

文件读取FileStream类 一个文件进行读写的时候&#xff0c;会变成一个文件流 FileStream类输入流 用于从文件进行读取文件。输出流&#xff0c;向文件写入的操作 FilleStream用于文件当中任何位置的读写 此文章借鉴与&#xff1a;C#教程&#xff08;非常详细&#xff09; Fil…

CentOS(Linux)中7-Zip工具的深度探索:p7zip的安装与应用

目录 前言 安装 7za 基本使用方法 解压文件 压缩文件或目录 其他常用选项 注意事项 前言 在CentOS Linux系统环境下&#xff0c;当提到高效的数据压缩与解压缩工具时&#xff0c;p7zip是一个不容忽视的选择。p7zip是7-Zip在Linux平台上的实现&#xff0c;提供了与Windows…

电脑怎么录制游戏视频?轻松捕捉每一帧精彩

随着游戏产业的蓬勃发展&#xff0c;越来越多的玩家不仅满足于在游戏世界中的探索与冒险&#xff0c;更希望将自己的游戏精彩瞬间记录下来&#xff0c;分享给更多的朋友。可是电脑怎么录制游戏视频呢&#xff1f;本文旨在为广大游戏爱好者提供一份详细的电脑游戏视频录制攻略&a…

Java 智慧工地监管平台源码 依托智慧工地平台,满足省、市级住建数据监管要求(微服务架构+Java+Spring Cloud +UniApp +MySql)

Java 智慧工地监管平台源码 依托智慧工地平台&#xff0c;满足省、市级住建数据监管要求 智慧工地是将互联网的理念和科技引入建筑工地&#xff0c;从施工现场源头抓起&#xff0c;最大程度的收集人员、安全、环境、材料等关键业务数据。通过结合物联网、大数据、互联网、云计…

spring data mongo MongoTemplate 查询最大值的数据

使用MongoTemplate查询最大值的数据&#xff0c;可以使用Query和Criteria类来构建查询条件。以下是一个示例&#xff1a; java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.spr…

AI绘画stable diffusion 模型介绍及下载、使用方法,超全的新手入门教程建议收藏!

大家好&#xff0c;我是画画的小强 今天我将继续分享AI绘画Stable Diffusion的模型、参数含义等&#xff0c;分享给各位朋友一起学习。 一、模型 Stable difusion 模型就是所谓的大模型&#xff0c;用来控制整个画面的风格走势的。 打开webui页面&#xff0c;可以看到大模型…

在Linux中如何解决程序崩溃的问题

一、背景 在Linux上的C/C环境如何调试程序崩溃问题&#xff1f;通常在这种情况&#xff0c;通过拿到出问题时产生的core文件&#xff0c;然后再利用gdb调试来看到出错时的程序栈信息。但某些特殊的情况&#xff0c;如不正确的系统设置或文件系统出现问题时&#xff0c;导致我们…

项目学习---Javaweb(超市订单管理系统)

知识点 MVC模型: 实现步骤:分为3级 1.M(Model) 持久层 代码与数据库进行交互的代码(Mybatis-dao层) 2.C(Control) 控制层 完成某项业务的具体操作过程(Controller层----Service层) 3.V(View) 视图层 一般指用户看到的内容(页面) 项目目录 .filter //过滤器 解决中文字符集…

【绝对有用】c++线程池相关技术点一

1.这段代码是在 C 中创建多个线程并启动它们。让我们逐步解析每个部分&#xff1a; for (size_t i 0; i < threadCount; i) {: • 这是一个 for 循环&#xff0c;从 i 0 开始&#xff0c;一直执行到 i 小于 threadCount 的时候。i 表示每次循环后将 i 加 1。threads.empl…

4、多分支判断 - 课件

一、基础知识 多分支判断的基本语法可以表示为: if (判断条件1) {// 如果判断条件1为真,执行这里的代码 } else if (判断条件2) {// 如果判断条件1为假且判断条件2为真,执行这里的代码 } else if (判断条件3) {// 如果判断条件1和判断条件2都为假且判断条件3为真,执行这里的代…

眼动研究实验设计方法

摘要 本文对基于实验室的眼动实验设计进行了总体回顾&#xff0c;并侧重于回顾实验程序和方法&#xff0c;从而为眼动追踪实验提供一个框架或背景。本文内容涵盖了基本的实验设计&#xff0c;这与实验心理学课本没有太大的区别&#xff0c;其中析因设计在眼动追踪研究中特别受…

day02 CSS基础

目录 CSS介绍 CSS使用方式 内联方式 内部样式表 外部样式表 CSS特性 优先级 选择器 元素选择器 id选择器 类选择器 派生选择器 子选择器 属性选择器 首个子元素 指定元素选择器 伪类选择器 文本 字体 列表 表格 背景 鼠标 border 宽高 box模型 元素水…

SpringCloudAlibaba组件集成

SpringCloudAlibaba组件集成 Nacos服务注册与发现 1.Nacos认识与安装 1.1.什么是Nacos Nacos和Eureka有着相同的能力&#xff0c;甚至更为强大&#xff0c;作为Dubbo 生态系统中重要的注册中心实现。官方对它有如下定义&#xff1a; Nacos致力于帮助您发现&#xff0c;配置…

查看mysql数据库端口号

在MySQL中&#xff0c;可以通过多种方式查看数据库服务器的端口号。以下是一些常见的方法&#xff1a; 1. 使用MySQL配置文件 MySQL服务器的端口号通常在配置文件中设置。在Linux系统上&#xff0c;这个配置文件通常是/etc/my.cnf、/etc/mysql/my.cnf&#xff0c;或者在/etc/…

Java+Angular+Nginx+RESTful API 医院云HIS系统源码 全国中小型诊所都在用的诊所his系统门诊业务流程 自主版权

JavaAngularNginxRESTful API 医院云HIS系统源码 全国中小型诊所都在用的诊所his系统门诊业务流程 自主版权 HIS系统&#xff08;Hospital Information System&#xff09;在门诊业务中的应用带来了许多显著的优势&#xff0c;这些优势不仅提高了医疗服务的质量和效率&#xf…