易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA获得一个数组的指定长度的排列

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;
}
}
from:http://peterliuye.javaeye.com/blog/364395


相关文档:

Java编译器使用—MyEclipse7.0如何安装vss插件?

1、将org.vssplugin_1.6.2文件夹及文件夹中的内容copy到...\Genuitec\Common\plugins目录下。
2、在目录...\Genuitec\MyEclipse 7.0\configuration\org.eclipse.equinox.simpleconfigurator 的文件bundles.info最后加一行
org.vssplugin,1.6.2,file:plugins\org.vssplugin_1.6.2\,4,false
3、重启MyEclipse7.0即可  ......

java的基本思想

Java中的方法调用中参数传递有两种,一个是对于参数是基本类型的使用的是值传递(直接传参数的值),另一个是引用传递,它是用于参数是类的对象,它传递的是这个对象的引用。
面向对象的思想anything is Object(万物皆对象)抽象,从对具体的对象中抽取有用信息。对象有其固有属性,对象的方法,即对象的行为(对象能做什 ......

Java递归分析

递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。
关键要抓住的是:
(1)递归出口
(2)地推逐步向出口逼近
例子:
example: 求5的阶乘。。     & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号