题目,得到某个数组,比如【1,2,3】 获得其全部的排列组合,包括1个数字的。2个数字的,和三个数字的等等。
import java.util.Stack;
/**
* JAVA获得一个数组的指定长度的排列组合。<br>
*
* @author JAVA世纪网(java2000.net, laozizhu.com)
*/
public class TestSequenceAll {
public static void main(String[] args) {
TestSequenceAll t = new TestSequenceAll();
Object[] arr = { 1, 2, 3 };
// 循环获得每个长度的排列组合
for (int num = 1; num <= arr.length; num++) {
t.getSequence(arr, 0, num);
}
}
// 存储结果的堆栈
private Stack<Object> stack = new Stack<Object>();
/**
* 获得指定数组从指定开始的指定数量的数据组合<br>
*
* @param arr 指定的数组
* @param begin 开始位置
* @param num 获得的数量
*/
public void getSequence(Object[] arr, int begin, int num) {
if (num == 0) {
System.out.println(stack); // 找到一个结果
} else {
// 循环每个可用的元素
for (int i = begin; i < arr.length; i++) {
// 当前位置数据放入结果堆栈
stack.push(arr[i]);
// 将当前数据与起始位置数据交换
swap(arr, begin, i);
// 从下一个位置查找其余的组合
getSequence(arr, begin + 1, num - 1);
// 交换回来
swap(arr, begin, i);
// 去除当前数据
stack.pop();
}
}
}
/**
* 交换2个数组的元素
*
* @param arr 数组
* @param from 位置1
* @param to 位置2
*/
public static void swap(Object[] arr, int from, int to) {
if (from == to) {
return;
}
Object tmp = arr[from];
arr[from] = arr[to];
arr[to] = tmp;
}
}
分享到:
相关推荐
排列组合是常见的数学问题,本文就以完整实例形式讲述了C#实现排列组合算法的方法。分享给大家供大家参考之用。具体方法如下: 首先,数学中排列组合,可表示为:排列P(N,R) 其实排列实现了,组合也就实现了,组合...
该文档对排列组合问题的算法设计问题进行一系列讲述
PHP实现多种类型的排列组合算法,PHP多种方式实现排列组合算法。非常有用,欢迎下载。
qt c++ 排列组合 实现 没分的联系本人索要
排列组合生成器,支持筛选,存储采用h2数据库,后台采用springboot框架
excel VBA - 排列组合生成算法 - ,可快速生成指定项目的所有排列组合
tata_bear原创了排列组合小工具,只要您输入最贴切的关键词,排列组合的工作就交给这个小工具吧,用时不到1秒钟,它会把所有的排列组合结果都呈现给您。而且界面的提示信息非常的清楚友好啊! 有了这个软件,组合...
排列组合 排列 组合 java排列组合算法 排列组合算法
开通淘宝直通车的店家...tata_bear原创了排列组合小工具,只要您输入最贴切的关键词,排列组合的工作就交给这个小工具吧,用时不到1秒钟,它会把所有的排列组合结果都呈现给您。而且界面的提示信息非常的清楚友好啊!
计算数字排列组合,可以组合出任意数字的组合
排列组合计算器是一个方便计算排列组合的小工具,解压缩得到exe文件后,直接运行 排列组合计算方法 排列(Pnm(n为下标,m为上标)) 数n的阶乘:n!=n(n-1)(n-2)...2×1 Pnm=n×(n-1)....(n-m 1);Pnm=n!/(n-m...
从n个数组中取出所有排列组合(Java实现)
易语言数字排列组合源码,算出了1到5的所有排列,读者有兴趣可以研究或者自行改进!
小小wintc程序 计算排列组合代吗 用递归写的 呵呵
vb写的排列组合相关小程序,实现从n个数中列举出那几个相加能够得到指定结果的所有情况,用递归实现的,效率差强人意,赚点分先。。。
数字排列组合是个经典的算法问题,它很通俗易懂,适合不懂业务的人学习,我们通过它来发现和运用并行计算的优势,可以得到一个很直观的体会,并留下深刻的印象。问题如下: 请写一个程序,输入M,然后打印出M个...
排列组合公式排列组合计算公式[规整].pdf
小学数学三年级下册中的数学广角——简单的排列组合的教学课件。从学生感兴趣的小活动开始,引起学生的学习兴趣,用他们学过的知识一步一步进入本次教学的重点——有规律的不遗漏的列出所有的排列可能。
很多企业性格测试 包含排列组合和逻辑推理题,提前预备有助于测试中较好的发挥