获取数组的所有子序列

2023-11-01

一个包含n个元素的集合,获取其所有子集,可以采用按位对应法,例如:

int[] array = {1, 3, 2, 5};

这个集合可以看做1325四位,每一位在子集中要么存在要么不存在,是否的操作我们就考虑二进制的01:

一位子序列的情况有: 1000  0100  0010  0001 ——》{1} {3} {2} {5}

二位子序列情况有: 1100 1010 1001 0110 0101 0011 ——》{1,3} {1,2} {1,5} {3,2} {3,5} {2,5}

三位子序列情况: 1110 1011 1101 0111 ——》{1,3,2} {1,2,5} {1,5,3} {3,2,5}

四位子序列情况 :1111——》{1,3,2,5}

空子序列: 0000——》{}

4位每一位都有存在不存在两种可能,那么总共是2的4次幂中可能,遍历每一种可能去除存在的数组的元素即为该种情况的子集

 /**
     * 位对应法
     *
     * @param array
     */
    public void place(int[] array) {
        //获取数据长度 那么对应的就是二进制字节位数1存在 0不存在  假设长度为4
        //一位子序列的情况有 1000  0100  0010 0001
        //二位子序列情况有 1100  1010  1001 0110 0101 0011
        //三位子序列情况 1110 1011 1101 0111
        //四位子序列情况 1111
        //空子序列 0000
        int length = array.length;
        //二进制的可能情况数量为1向左移动数组长度位数,为什么呢?因为总共是3位
        // 每一个存在不存在两种可能 所以就是2的4次方种情况
        int end = 1 << length;
        int mark = 0;//标记
        //打印出每一种情况的子序列
        for (mark = 0; mark < end; mark++) {
            boolean isNUll = true;
            //遍历都不存在就是空子集
            for (int i = 0; i < length; i++) {
                if ((1 << i & mark) != 0) {//!=0存在 =0不存在
                    isNUll = false;
                    System.out.print(array[i] + ",");
                }
            }
            if (isNUll) {
                System.out.print("null");
            }
            System.out.println();
        }
    }
 @Test
    public void getAllChildren() {
        int[] array = {1, 3, 2, 5};
        place(array);
    }

输出结果:

null
1,
3,
1,3,
2,
1,2,
3,2,
1,3,2,
5,
1,5,
3,5,
1,3,5,
2,5,
1,2,5,
3,2,5,
1,3,2,5,

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取数组的所有子序列 的相关文章

  • k8s-进阶-工作负载

    一 控制器 Pod 容器组 是 Kubernetes 中最小的调度单元 您可以通过 kubectl 直接创建一个 Pod Pod 本身并不能自愈 self healing 如果一个 Pod 所在的 Node 节点 出现故障 或者调度程序自身
  • 《MFC添加语音功能》

    MFC一般提示都是用消息对话框来处理 同时我们也可以加上语音播报功能 语音播报我们可以调用微软自带的Microsoft Speech API SAPI 5 4 它里面有语音识别 还有有一个Text to Speech 引擎 可以将文本转化为
  • 目标检测——YOLOv3、YOLOv4、YOLOv5、YOLOv7正负样本匹配、YOLO3损失函数理解

    系列文章目录 目标检测 map概念 IoU汇总IoU GIoU DIoU CIoU SIoU EIoU Wiou Focal alpha 目标检测 YOLOv3 YOLOv4 YOLOv5 YOLOv7正负样本匹配 YOLO3损失函数理解

随机推荐

  • linux redhat 离线安装 mysql 8.0.20

    官方文档 https dev mysql com doc refman 8 0 en linux installation rpm html 以下操作都是用 root 用户操作 另配置文件是使用mysqld initialize 生成的 e
  • kafka消费主题和消费组总结

    1 查询kafka主题列表的命令 切换到kafka的安装目录bin目录下 执行如下代码 kafka topics sh list zookeeper zookeeprerIp zookeeperPort 比如 kafka topics sh
  • WSL 的安装、报错解决、使用技巧

    需要Windows10或以上系统版本 如果你的操作系统是Windows 10 版本 2004 及更高版本 内部版本 19041 及更高版本 或 Windows 11 并且你从来没有安装过WSL 你可以使用命令行简单的安装安装 WSL 使用管
  • linux Oops和Panic关系

    常在河边走 哪能不湿鞋 用Linux 总有死机的时候 如果运气好 会看到一些所谓 Oops 信息 在屏幕上或系统日志中 比如 Unable to handle kernel paging request at virtual address
  • 印象笔记、为知笔记、有道云笔记使用比较

    特点比较 印象笔记 为知笔记 有道云笔记 Bear Typora 特点比较 功能 印象笔记 为知笔记 有道笔记 费用 免费 有会员 60 元 年 免费 有会员 手机 PC 云同步 微信保存 网页剪藏 笔记内容加密 共享笔记本 快捷键 批量导
  • 完整LUT解释说明

    什么是LUT 我们业内在LUT的应用方面有着许多混乱的认识 很多人会把LUT看成是一种 黑魔法 然而实际上它们是再正常不过的东西 因此为了帮助大家了解LUT的定义和工作原理 本文将会尽可能详细地为大家讲述LUT以及它的应用 包括用于校准的技
  • 简介JSONObject的各种用法

    1 java对象转化成String String s JSONObject toJSONString javaObject class 2 java对象转化成Object Object str JSONObject toJSON javaO
  • SW-3配置文件

    CS6200 28X EI config hos SW 3 SW 3 config vlan 10 SW 3 config vlan10 name FB YX SW 3 config vlan10 vlan 20 SW 3 config v
  • 树莓派Raspbian Buster/Debian 10 安装ROS

    目录 一些补充 安装ROS 初始化rosdep 测试 平台 树莓派4B 系统版本 2020 05 27 raspios buster arm64 img 一些补充 系统安装参考 树莓派学习笔记 一 烧录系统 无屏幕 配置Wifi和SSH服务
  • QT 元对象解析 及和其他语言区别

    说Qt信号与槽是一个很好机制 不如说Qt的元对象系统很强大 这也是大家讲Qt就必须将信号与槽 讲信号与槽就要讲Qt的元对象系统 当然初学者知道怎么用就OK啦 当然随着你写的代码越多 接触的平台越多的时候 你就会好奇Qt是如何把两个 多个 任
  • Java程序——检索文件(含内容)

    项目说明 给定一个指定目录和关键字 扫描其中的文件名和文件内容 找到包含关键字的文件 完整代码 import java io File import java io FileInputStream import java io IOExce
  • 利用find命令进行批量操作

    前些天 我要把Linux上的几千个txt文档进行转码 需要用到iconv命令 可是我总不能 一个一个的去敲 文档转码命令 iconv f GBK t UTF 8 file1 o file2 将file1从GBK转为UTF 8 并输出为fil
  • Wireshark抓包体验

    1 嗅探器原理 嗅探技术是网络安全攻防技术中很重要的一种 通过它可以获取网络中的大量信息 与主动扫描相比 嗅探更难以被察觉 能够对网络中的活动进行实时监控 网络嗅探器实际上就是网络中的窃听器 其用途就是捕获分析网络中的数据包 帮助网络管理员
  • CMake方式配置PCL+VS开发环境

    PCL VS安装配置其他方式看下面博客 本文链接 win10 vs2019 pcl1 11 0安装教程 a zhua66的博客 CSDN博客 win10 安装pcl 考虑到配置属性表 xxx props 非常麻烦繁琐 换设备又得重新选择PC
  • 电源设计问题

    目录 一 电源器件 1 法拉电容 二 充电规则 1 充电限制 2 充电时间计算 三 有线充电 四 无线充电 一 电源器件 1 法拉电容 超级电容具有功率密度高 充放电时间短 循环寿命长 工作温度范围宽等显著的优点 适合应用在大功率能量流动的
  • 南京大学《软件分析》笔记01 - 静态分析的基本概念

    Rice s Theorem Any non trivial property of the behavior of programs in a r e language is undecidable r e recursively enu
  • 顺序表初始化

    文章目录 1 顺序表 2 顺序表的初始化 1 顺序表 顺序表 顺序存储结构 存储数据时 会提前申请一整块足够大小的物理空间 然后将数据依次存储到一整块连续的存储空间内 存储时做到数据元素之间不留一丝缝隙 使用顺序表存储集合 1 2 3 4
  • Cheat Engine 教程( 1 - 9 通关 )

    工具包 https down 52pojie cn Tools Debuggers Cheat Engine 官网 https www cheatengine org Cheat Engine v7 5 汉化 https pan aoe t
  • FPGA project : inf_rcv

    module top input wire sys clk input wire sys rst n input wire inf in output wire led output wire ds output wire oe outpu
  • 获取数组的所有子序列

    一个包含n个元素的集合 获取其所有子集 可以采用按位对应法 例如 int array 1 3 2 5 这个集合可以看做1325四位 每一位在子集中要么存在要么不存在 是否的操作我们就考虑二进制的01 一位子序列的情况有 1000 0100