求一个集合的所有子集(java实现)

Java之获取集合的所有子集(排列组合...) 最近因为elasticsearch数据结构设计,设计一种需要字符串数组中的所有组合。。。于是各种找…最终在Hutool中找到 目录 第一步:添加依赖 第二步:再次封装 第三步:测试 附录 第一步:添加依赖 依赖:Hutool(不知道的请百度) 它的MathUtil类里面的方法都很好,请自行看源码,里面都是中文注释,能符合大部分的需求,各种组合排列,我在它的基础上封装了一个符合自己需求的方法 第二步:再次封装 :如下 /** * 获取数组的所有子集 * * @param s 阅读详情

求一个集合的所有子集表示从一个集合当中,任取任意项或不取,所能得到的所有结果,比如有一个集合{a,b,c,d},那么{a,b}, {b, d}等都是它的子集,空集也是它的子集,一个具有n 个元素的集合,它的子集共有2^n个,因为对于每个元素都有两种可能:选与不选。如果用1来表示选择,0表示不选,那么四个元素的集合选择情况可以表示为:0000,0001,0010,0100,1000,1001……当写出所有的子集后,可以发现它们恰好对应着从0到15的二进制码表示,所以可以从二进制码入手来解这个问题。下面上代码:

public class Subset {

	public static void main(String[] args) {
		char[] a = {'a','b','c','d'};
		subSet(a);
	}
	
	private static void subSet(char[] a){
		int n = a.length;
		for(int i=0; i<(1<<n); i++){//循环2^n次
			String setStr = Integer.toBinaryString(i);//将int值转换成二进制值的字符串
			int unChoose = n-setStr.length();
			System.out.print("{");
			for(int j=0; j<setStr.length(); j++){
				if(setStr.charAt(j)=='1')//1表示被选中,0表示没有被选中
					System.out.print(a[unChoose+j]);
			}
			System.out.println("}");
		}
	}
}


运行后得到的结果如下:

{}
{d}
{c}
{cd}
{b}
{bd}
{bc}
{bcd}
{a}
{ad}
{ac}
{acd}
{ab}
{abd}
{abc}
{abcd}

Java算法学习:求取一个集合中的所有子集 求取一个集合中的所有子集 package 算法学习; import java.util.HashSet; import java.util.Set; /** * Page Description: * User: Yelihu * Date: 2019-03-02 * Time: 下午 3:02 * Function: */ public class 增量迭代 { p... 阅读详情

相关推荐

得到一个集合的全部子集,java实现

GetSubSet是得到给定大小的所有子集,若要得到所有子集,只需从i=1,2,...,n分别调用。

Java求子集的方法

问题 给你一个整数数组 nums ,数组中的元素互不相同(也可以相同) 。返回该数组所有可能的子集(幂集)。解集可以包含重复的子集。你可以按任意顺序返回解集。 方法 方法一:枚举 可以先new一个list,里面的元素还是list。我们每次将一个元素向list里面的每个list中添加后重新放入list中。直至循环结束 class Solution { public List<List<Integer>> subsets(int[] nums) { List&

西瓜的博客 1580

Java 通过位运算求一个集合的所有子集方法

下面小编就为大家带来一篇Java 通过位运算求一个集合的所有子集方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

java求集合的所有子集、所有子序列、全排列全组合问题

1.求集合的所有子集(又称全组合) 求一个集合的所有组合,例如集合{A,B,C}的所有子集为:{},{A,B,C},{A,B},{A,C},{B,C},{A},{B},{C}。 思路 对于任意集合A,元素个数为n(空集n=0),则所有子集的个数为2^n个 如集合A={a,b,c},其子集个数为8;对于任意一个元素,在每个子集中, 要么存在,要么不存在,对应关系是: a=1或a=0,b=...

qq_28140917的博客 4622

关于DHCP Option60的认识

<br />       最近在网络建设过程中,必须面对一个实际存在的问题:当只有一根线入户时,该如何解决CATV和宽带业务的共存呢?这时就要考虑用到DHCP Option60了,那么DHCP Option60到底是如何来实现业务区分的呢?<br />首先先来看下DHCP协议,在DHCP协议中,定义了一个option字段,该字段主要是用来扩展DHCP协议的,Option 60 (Vendor class identifier)是DHCP报文中的一个选项字段,code为60,可以标识终端类型,根据不同的终

luoyingchuan的专栏 7940

C# WPF多页面间的数据共享(经典)

实现页面间的数据共享有很多方法,比如:①事件的发布订阅 ②委托③ioc容器④静态类等,这节主要通过静态的集合实现数据的添加和获取。

sf315418的博客 639

Java求出一个给定集合的所有子集

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33831673的博客 1051

C#调用Bartender打印标签,除了打印还能一键导出图片和PDF(附完整代码)

本文详细介绍了如何使用C#集成Bartender实现标签的多格式输出,包括打印、图片和PDF导出。通过完整的代码示例和实战技巧,帮助开发者解决分辨率适配、纸张尺寸控制等核心问题,提升工业自动化和物流管理中的标签处理效率。

weixin_31236101的博客 369

Java实现求一集合的所有子集

前言: 对任意集合A,它有2^n个子集(n为集合A中的元素的个数),为什么呢?我们可以这样想:在构造子集时,对于集合A中的每一个元素,有两种方案,即选与不选,对集合中每个元素的方案进行组合,就会有2的n次方中组合。 举例: 集合A={1,2,3}的子集有{}、{1}、{2}、{3}、{1,2}、{1,3}、{2,3}、{1,2,3}共222=8个即2的3次方。 算法思想: 采用递归方式,对于求含有n个元素的集合的子集,递归求解它的n-1个元素的所有子集存于结果集中,再赋复制一份结果集出来,为复制出来的结果集

weixin_45685353的博客 4609

Python地理空间库安装指南:从gdal到geopandas的完整流程

本文详细介绍了Python地理空间库的完整安装流程,包括gdal、rasterio和geopandas等核心库的安装与配置。通过Anaconda环境管理和conda-forge频道,帮助开发者高效解决依赖问题,确保地理空间数据处理环境的稳定运行。

weixin_29091105的博客 462

一分钟了解 Claude Code

在 AI 编程工具百花齐放的 2026 年,凭借其终端原生、全项目理解、自主执行的核心能力,开辟了全新赛道。它不是要替代你的 IDE 或编辑器,而是成为你最强大的终端扩展,让你在熟悉的环境中,用自然语言驱动开发,专注创意,而非琐事。

h a 6 6 6 c k 为 你解决复杂难题! 2205

java 位集合_Java 通过位运算求一个集合的所有子集的实现方法详解

下面小编就为大家带来一篇Java 通过位运算求一个集合的所有子集方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧Java没有自带的求一个集合的所有子集的方法,我们可以通过集合的子集规律来求。一个集合的所有子集等于2^该集合的长度。比如{c,b,a}的长度为3,这个集合的子集就有8个。这句话看起来很简单,但同时也隐含着高深的哲理。其实一个集合的所有集合,和2^该集合...

weixin_42367947的博客 143

YOLO11改进|注意力机制篇|引入先验卷积注意力机制CPCA

YOLO11中添加先验卷积注意力机制CAPA

A1983Z的博客 2374

java实现求一个项目集合任意元子集的通用算法

在关联规则挖掘过程中,经常涉及到求一个频繁项目集的n元子集,在此设计了一个通过位操作映射子集的通用算法。 import java.util.BitSet; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class FindSubset { private BitS...

beifenggo 163

【AI智能体】Coze 搭建个人旅游规划助手实战详解

Coze 制作旅游规划助手机器人实战详解

congge 4607

适航规章、标准,书籍资料下载汇总(更新中)

以下是一些收集到的适航相关的资料,分享给大家。(如果没有你想要的资料,请留言,等找到会及时更新!

qq_41854911的博客 2548

回溯法动态规划-06subsets(I II)现在有一个没有重复元素(有重复元素)的整数集合S,求S的所有子集java实现

题目描述(牛客需要排序输出) 现在有一个没有重复元素的整数集合S,求S的所有子集 注意: 你给出的子集中的元素必须按非递增的顺序排列 给出的解集中不能出现重复的元素 例如: 如果S=[1,2,3], 给出的解集应为: [↵ [3],↵ [1],↵ [2],↵ [1,2,3],↵ [1,3],↵ [2,3],↵ [1,2],↵ []↵] 思路:用到回溯方法,具体思想可...

WukongGo的博客 1374

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java set子集_Java 求集合的所有子集

packagech01;importjava.util.HashSet;importjava.util.Iterator;importjava.util.LinkedList;importjava.util.List;importjava.util.Set;public classQuerySubSet {// 递归调用, 求出 Set的子集, 返回List列表public static List...

weixin_39754142的博客 430

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

78. subsets java_[LeetCode] 78. Subsets Java

题目:Given a set ofdistinctintegers,nums, return all possible subsets.Note:The solution set must not contain duplicate subsets.For example,Ifnums=[1,2,3], a solution is:[[3],[1],[2],[1,2,3],[1,3]...

weixin_35828992的博客 215

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

《leetCode-php》求不重复数组的子集

现在有一个没有重复元素的整数集合S,求S的所有子集 思路:通过二进制来确定有哪些子集 <?php function subsets($arr) { $num = count($arr); $end = pow(2, $num); $arrRet = array(); for ($i = 0; $i < $end; $i ++) { ...

less_cold的博客 271

Java求一个集合的所有子集

Java求一个集合的三种算法,二进制、动态规划、DFS+回溯

大兵的博客 1529

输出一个字符串数组所有非空子集

前几天导师让写一个数据挖掘的算法,用到了一个求一个字符串数组子集的程序,现在总结一下,说不定下次还可以用到。 java 代码如下: package com.xing.test; import java.util.Arrays; import java.util.LinkedList; /** * * @author LiuYinxing * */ public class Comb

Growth Diary 3024

Java 求集合的所有子集

递归方法调用,求解集合的所有子集。 package ch01; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; public class QuerySubSe...

anjiangang9974的博客 1279

求集合的所有子集(java实现)

代码: import java.io.File; import java.io.FileWriter; import java.io.IOException; /* *Created on 2015年1月28日 *Copyright 2015 Y. Cai Limited crop. All Rights Reserved * *7289***0@qq.com */ public

蔡先生的专栏 3894
上一篇: 怎样根据下载链接得到文件名(并非直接从链接中截取)
下一篇: 经典算法之动态规划(一):入门级动态规划
热血大婶
博客等级 码龄16年 58粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热血大婶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值