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;     
#   }     
# }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值