排列组合-生成集合的所有子集
//一个有N个不重复元素的集合的某个子集,可以用这个N个元素中每个元素在或是不在这个子集中来表示。
//把这N个元素一字排开,每个位置可以用1来标识对应位置的元素在子集中,用0来标识这个元素不在子集中
//依据计数的乘法原理这样的排列数有2^N个,也就是一个有N个不重复元素的集合有2^N个子集。
//而这种10表示方式刚好与N元的二进制串一一对应。
public class CombinationAll
{
public static void main(String[] args)
{
//指定集合的元素个数N
int N=Integer.parseInt(args[0]);
//使用一个长度为N的一维数组来表示N元的2进制串
int[] bin=new int[N];
//并从00...000开始,到11..111结束。
//由于检查11...111会花费较多的比较,改用计数器来实现。
for(int i=0;i<N;i++)
bin[i]=0;
show(bin);
//计数器标识还剩多少个子集没有列出
double Total=Math.pow(2,N)-1;
//二进制串每次增加1,计数器每次减1
int i;
while(Total>0)
{
//从低位向高位找到第一个0,然后将这个0变成1,将这个位置后面的1全变成0
for(i=N-1;i>=0 && bin[i]==1;i--)
bin[i]=0;
bin[i]=1;
show(bin);
Total--;
}
}
//显示这个数组中的二进制串
private static void show(int[] bin)
{
for(int i=0;i<bin.length;i++)
StdOut.printf("%d",bin[i]);
StdOut.println();
}
}
转载于:https://www.cnblogs.com/longjin2018/p/9868595.html
排列组合-生成集合的所有子集相关推荐
- python数字排列组合去重_排列组合-生成集合的所有子集
//一个有N个不重复元素的集合的某个子集,可以用这个N个元素中每个元素在或是不在这个子集中来表示. //把这N个元素一字排开,每个位置可以用1来标识对应位置的元素在子集中,用0来标识这个元素不在子集中 ...
- python排序函数set_【Python】排列组合itertools 集合set
■itertools 利用python的itertools可以轻松地进行排列组合运算 itertools的方法基本上都返回迭代器 比如 •itertools.combinations('abcd',2 ...
- python生成排列组合_Python 排列组合生成
zckun:老哥们, 请教一个问题, 是关于排列组合的, 前几天和老哥们讨论了一下, 能是能解决, 但感觉不太方便 看一个简单的例子应该就明白了. to 目前是我这样做的, 用了一个模版 templa ...
- .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)
阅读目录 1.KwCombinatorics基本介绍 2.足球彩票排列组合应用 3.排列组合生成代码与测试 今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinator ...
- 【Python基础】Python中的高效迭代库itertools,排列组合随便求
本文目录 一.模块概述 二.组合生成器 2.1 product 2.2 permutations 2.3 combinations 2.4 combinations_with_replacement ...
- 二进制子集生成与排列组合
二进制子集生成与排列组合 咳咳,二进制我觉得很有必要单独列出来,二进制的玩法还是很多的,比较多的就是表示多重状态,因为只有1和0的存在,每一位可以表示可取或者不可取,还能配合排列组合使用,来试试. 首 ...
- LeetCode 例题精讲 | 08 排列组合问题:回溯法的候选集合
点击关注上方"五分钟学算法", 设为"置顶或星标",第一时间送达干货. 转自面向大象编程 本期例题:LeetCode 46 - Permutations[1]( ...
- 【组合数学】排列组合 ( 集合排列、分步处理示例 )
文章目录 一.集合排列.分步处理示例 排列组合参考博客 : [组合数学]基本计数原则 ( 加法原则 | 乘法原则 ) [组合数学]集合的排列组合问题示例 ( 排列 | 组合 | 圆排列 | 二项式定理 ...
- 【组合数学】排列组合 ( 排列组合内容概要 | 选取问题 | 集合排列 | 集合组合 )
文章目录 一.排列组合内容概要 二.选取问题 三.集合排列 四.环排列 五.集合组合 参考博客 : [组合数学]基本计数原则 ( 加法原则 | 乘法原则 ) [组合数学]集合的排列组合问题示例 ( 排 ...
最新文章
- 35个高级Python知识点总结
- python 斐波拉契递归 尾递归 备忘录 动态规划 迭代
- HTMLCSS设计与构建网站 笔记HTML
- Liferay 用PortletSession 实现不同Liferay之间通讯
- Python常见十六个错误集合,你知道那些?
- python 进程编程速成
- Ajenti-Linux控制面板之自动化运维工具
- oracle 监听 无法连接,oracle监听hang,无法建立新连接TNS-12540
- 相似基因(洛谷-P1140)
- pythonurllib的使用_python re和urllib的使用问题。
- vue +element 导出多级表头(标题)
- sqlserver安装介质上文件的长路径名称失败_SQL Server 2012 软件安装教程
- Vue:不使用webpack情况下将Cesium引入到Vue项目中
- python解题工程力学_工程力学学习指导与解题指南(普通高等教育十三五规划教材)...
- 进程间通信方式 超详细解析全站最全
- 2.1 软件开发生命周期模型
- python hist2d_Matplotlib(hist2D)中的2D直方图是如何工作的?
- 信息安全产品体系的介绍
- Anchor Boxes
- 「Linux-基础」CentOS8 权限管理
热门文章
- 第 5 章 输入输出管理
- linux安装挂载samba,【Linux系列】Centos7安装Samba并将工作区挂载到win(八)
- mac. mysql 设置root_Mac平台重新设置MySQL的root密码
- c++ 获取当前时间_ThinkPHP6中获取参数的3种常用方法【总结】
- 软件工程 java实现_软件工程作业——WC Java实现
- windows python安装包_Python-3.9安装包(windows版)
- c语言 结构体声明和引用、,结构体的声明与自引用
- 查一个字段中字符集超过30的列_Mysql 的字符集以及带来的一点存储影响
- 分组聚合查询两门以上MySQL_MySQL中的分组聚合查询
- 安卓10侧边返回_Flyme 8 体验:可能是最好的国产安卓系统