高效率的全组合算法(Java版实现)
来源:互联网 发布:icem网络节点怎么设置 编辑:程序博客网 时间:2024/05/18 03:37
算法描述:
算法说明:当n大于2时,n个数的全组合一共有(2^n)-1种。
当对n个元素进行全组合的时候,可以用一个n位的二进制数表示取法。
1表示在该位取,0表示不取。例如,对ABC三个元素进行全组合, 100表示取A,010表示取B,001表示取C,101表示取AC 110表示取AB,011表示取BC,111表示取ABC
注意到表示取法的二进制数其实就是从1到7的十进制数
推广到对n个元素进行全排列,取法就是从1到2^n-1的所有二进制形式
要取得2^n,只需将0xFFFFFFFF左移32-n位,再右移回来就可以了。
算法实现:
- package com.set.test;
- public class SetTest {
- public static void main(String[] args) {
- String str[] = { "A", "B", "C", "D", "E" };
- int nCnt = str.length;
- int nBit = (0xFFFFFFFF >>> (32 - nCnt));
- for (int i = 1; i <= nBit; i++) {
- for (int j = 0; j < nCnt; j++) {
- if ((i << (31 - j)) >> 31 == -1) {
- System.out.print(str[j]);
- }
- }
- System.out.println("");
- }
- }
- }
自我评价(搞笑) | Hash算法
- 2010-07-17 17:11
- 浏览 2225
- 评论(2)
- 分类:编程语言
- 相关推荐
0 0
- 高效率的全组合算法(Java版实现)
- 高效率的全组合算法
- 高效率的全组合算法
- 高效率的全组合算法
- 高效率的排列组合算法(java实现)
- 高效率的全组合算
- java 高效率的排列组合算法(java实现)
- Java实现全排列、组合算法
- java全组合算法
- 全排列和组合的实现算法
- 全排列和组合的实现算法
- Java实现全组合
- 高效全组合算法实现
- 递归算法的java实现(取球、全排列、反转串、杨辉三角、AB组合)
- 高效率的全排列算法——N进制方法实现
- [算法学习]Java实现字符序列全组合
- 字符串全排列与全组合的递归实现-Java版
- C语言实现全排列(部分算法参考网友,可实现重复字符的组合)
- 兴奋剂pvp怕飞洒
- cf #256 (Div. 2) C. Painting Fence 分治
- eval函数的工作原理
- C++排序
- 写android程序碰到的一些记录
- 高效率的全组合算法(Java版实现)
- 倾负天下-Me丶安然恋颜
- 引领产业发展趋势
- Maven
- 说法问气氛委屈日
- 蓝牙调试工具hcitool的使用实例
- uva 232 - Crossword Answers
- NSDate的处理:前一天、后一天等关于时区偏移的处理以及在数据库中的使用
- POJ 3984:迷宫问题(BFS+路径记录)
评论