博客上看到的一个算法,用Java实现了一个,转载而来
算法描述:
算法说明:当n大于2时,n个数的全组合一共有(2^n)-1种。 只是,这个算法n>32时就不适合了。
当对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位,再右移回来就可以了。
算法实现:
Java代码
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("");
}
}
}
分享到:
相关推荐
根据提供的信息来看,实际文章内容并未直接包含关于组合...不同的全排列算法各有优缺点,选择合适的算法取决于具体的应用场景和需求。通过深入理解这些算法的工作原理及其适用范围,可以更好地利用它们解决实际问题。
这个文件中的Java算法题目集合涵盖了多个经典算法和编程问题,适合用来提升编程能力和算法理解。以下是对这些题目知识点的详细解释: 1. **最大公约数与最小公倍数**:求两个数的最大公约数(GCD)和最小公倍数...
### 多态蚁群算法——Java版 #### 引言 多态蚁群算法是一种受自然界蚂蚁觅食行为启发的优化算法。它主要用于解决复杂的组合优化问题,如旅行商问题(TSP)等。该算法的核心思想是模拟蚂蚁群体在寻找食物过程中通过...
Java七种排序算法详解 Java排序算法是计算机科学中的一种基本算法,用于对数据进行排序。...Java七种排序算法都是常用的排序算法,每种算法都有其优缺点,选择合适的排序算法取决于具体的应用场景。
### Java扑克牌24点算法解析 #### 一、算法背景与目标 24点游戏是一种数字游戏,玩家需要利用给定的四个数字通过加、减、乘、除(可加括号)来使得最终计算结果等于24。在本算法实现中,使用Java语言编写了一个简单...
Java算法源码集合是一个汇集了各种经典算法实现的资源库,旨在帮助开发者加深对算法的理解,提高编程技能。源码中的实现可能来自网络上的不同来源,因此可能存在一些错误或不完善之处,但在学习和实践中,我们可以...
在编程领域,排序算法是计算机科学中的重要组成部分,特别是在数据处理和数据...而面对大量数据,归并排序或快速排序等高效算法会是更好的选择。理解并掌握这些排序算法,能够帮助我们编写出更高效、更具优化的代码。
然而,并非所有的优化问题都能通过贪心策略找到全局最优解,贪心算法的有效性取决于问题本身的特性。 #### 二、贪心算法的应用场景 贪心算法适用于以下几种情况: - 当问题具有“贪心选择性质”:即某一步做出的...
在编程领域,排序算法是数据处理的核心部分,尤其是在Java这样的高级语言中。本文将深入探讨在给定的压缩包文件中涉及的几种经典排序算法,包括归并排序、快速排序、简单选择排序、插入排序、冒泡排序、希尔排序以及...
在编程领域,组合排列是数据结构与算法中的一个重要概念,主要涉及到如何从一个给定的元素集合中...在实际编程中,应注重算法的效率和代码的可读性,合理运用各种数据结构和设计模式,以实现高效、灵活的组合排列算法。
0-1背包问题是一种经典的组合优化问题,在计算机科学和运筹学中有着广泛的应用。它描述的是这样的场景:我们有一组物品,每种物品都有一个重量和价值,我们需要选择一部分物品放入一个容量有限的背包中,使得放入...
在编程领域,排序算法是数据结构与算法中的基础部分,对于任何编程语言,包括Java,理解和掌握各种排序算法都是非常重要的。排序算法不仅有助于提升代码的效率,还对优化程序性能起到关键作用。以下是对给定的Java...
Unity5.2版本中的Behavior Trees算法提供了高效且灵活的方式来定义复杂的NPC行为逻辑。本篇文章将深入探讨行为树的基本概念、结构和组件,以及如何在Unity中实现。 **1. 行为树基础** 行为树由一系列节点组成,每...
归并排序是计算机科学中一种高效的排序算法,采用分治法实现。它的工作原理是将原始数组切分成更小的数组,直到每个小数组只有一个位置,然后将小数组归并成较大的数组,直到最后只有一个排序完毕的数组。归并排序...
在实际开发中,选择哪种排序算法取决于具体需求,如数据规模、是否稳定、空间复杂度等因素。熟练掌握各种排序算法及其在Java中的实现,能帮助开发者更好地优化程序性能和内存使用。通过阅读源码,可以进一步理解这些...
### A星算法求解旅行商TSP问题 #### 一、问题背景与描述 旅行商问题(Traveling ...通过对启发式函数的精心设计以及合理选择数据结构,A 星算法能够在较短时间内找到最优解,为解决旅行商问题提供了一种高效的方法。
这一问题本质上属于组合优化问题,且由于其复杂性和约束条件的多样性,传统的方法往往难以高效求解。遗传算法作为一种受到自然界生物进化过程启发的优化技术,因其强大的全局搜索能力和并行处理能力,成为解决这类...
【程序 15】:排序问题,可以使用冒泡排序、选择排序等简单排序算法,这里是最简单的三数取小法,每次比较并交换相邻的两个数,确保每次之后的第一个数都是当前未排序部分的最小值。 【程序 16】:9乘法口诀表,...
在编程领域,数组是基本的数据结构之一,用于存储一...理解和掌握如何在Java中高效地解决这类问题对于任何Java开发者来说都是非常重要的技能。通过使用递归和回溯,我们可以生成所有可能的组合,同时保持代码简洁易懂。