幂集(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; 今天我将一一解析多种光影调控…

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…

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

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

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

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

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

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

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

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

眼动研究实验设计方法

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

SpringCloudAlibaba组件集成

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

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

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

【linux】操作系统使用wget下载网络文件,内核tcpv4部分运行日志

打印日志代码及运行日志(多余日志被删除了些)&#xff1a; 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/55a53caa06c1472398fac30113c9731cb9e3b482 测试步骤和手段&#xff1a; 1、清空 kern.log&#xff1b; 2、使用wget 下载linux-6.9.tar.gz&…

切割游戏介绍

简介 上大学时&#xff0c;在学校实验室里玩过一个貌似使用VC写的小游戏&#xff0c;一个小球在界面上四处游荡&#xff0c;玩家使用鼠标切割背景&#xff0c;将背景切割剩余到一定的百分比后&#xff0c;就胜利了&#xff0c;后边的背景图会全部展示出来。 使用qt的qml技术&a…

初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发

当你初始化一个Android项目时&#xff0c;Android Studio会自动生成一些文件和目录结构&#xff0c;以帮助你快速上手开发。这些文件和目录各自有其特定的功能和用途。下面我为你解释一下这些自动生成的内容&#xff1a; 1. app 目录 这是你的应用模块的根目录&#xff0c;包…

django学习入门系列之第二点《浏览器能识别的标签1》

文章目录 文件的编码(head)网站表头信息(head)标题&#xff08;body&#xff09;div和span往期回顾 文件的编码(head) <!--浏览器会以"UTF-8"这种编码来读取文件--> <meta charset"UTF-8">网站表头信息(head) <title>Title</title&…

使用 Iceberg、Tabular 和 MinIO 构建现代数据架构

现代数据环境需要一种新型的基础架构&#xff0c;即无缝集成结构化和非结构化数据、轻松扩展并支持高效的 AI/ML 工作负载的基础架构。这就是现代数据湖的用武之地&#xff0c;它为您的所有数据需求提供了一个中心枢纽。然而&#xff0c;构建和管理有效的数据湖可能很复杂。 这…

总台,地方卫视媒体邀约新闻报道采访怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 总台对选题要求非常严格&#xff0c;在想做总台新闻报道之前&#xff0c;让我们先来了解下总台对新闻选题有哪些要求&#xff1a; 一、新闻价值 社会意义&#xff1a;新闻报道的首要任务…

【CHIP】LTC2991 读取温度电压电流 调试实例

文章目录 0. ENV1. LTC2991 数据说明1. 数据计算公式2. 寄存器概述1. 管脚使能寄存器2. 芯片使能寄存器 2. 软件实现1. 概述2. 源码(部分)3. 参考log 0. ENV 软件系统&#xff1a;略 LTC2991&#xff1a;VCC3.3 温度&#xff1a;温控接v1-v2 / v2-v3 / … (双端采样)电压&#…

QT工作笔记

文章目录 QDialog的accept()和reject()介绍QPushButton提示属性样式表QComboBox QDialog的accept()和reject()介绍 accept() 和reject() 这两个槽函数都会和close() 一样关闭dialogaccept() 关闭后 返回了Dialog::Acceptedreject() 关闭后 返回了Dialog::Rejected这样当我们需…