排列组合算法-----使用递归
来源:互联网 发布:比尔盖茨 关于编程 编辑:程序博客网 时间:2024/06/04 13:35
import java.util.Arrays;
import java.util.Deque;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Set;
/**
* 用1,2,2,3,4,5来打印出所有的排列组合信息
* 要求3与5不相连,4不能出现在第三个位置
* 提供一个通用的处理排列组合的算法
* @author Administrator
*
*/
public class SortOrderTest {
public static void main(String[] args) {
Deque<Integer> stack=new LinkedList<Integer>();
Set<String> set=new HashSet<String>();
Integer[] arr=new Integer[] {1,1,3,4,5};
print(arr,stack,set);
for(String s:set) {
System.out.println(s);
}
}
public static void print(Integer[] arr,Deque<Integer> stack,Set<String> set) {
if(arr.length==1) {
stack.push(arr[0]);
Iterator<Integer> iterator = stack.iterator();
String str="";
while(iterator.hasNext()) {
Integer next = iterator.next();
str=str+next;
}
if(str.indexOf("35")==-1&&str.indexOf("53")==-1&&str.indexOf("4")!=2) {
set.add(str);
}
stack.pop();
}else {
for(int i=0;i<arr.length;i++) {
stack.push(arr[i]);
Integer[] brr=arr.clone();
brr[i]=brr[brr.length-1];
brr=Arrays.copyOf(brr, brr.length-1);
print(brr,stack,set);
stack.pop();
}
}
}
}
阅读全文
0 0
- 排列组合算法-----使用递归
- 排列组合的递归算法
- c#排列组合递归算法
- 排列组合算法(非递归)
- 排列组合递归算法 java
- 排列组合算法(递归)1
- 排列组合算法的递归实现
- java递归算法中的排列组合问题及排列组合去重
- 排列组合非递归算法的实现
- 【算法】递归求解几类排列组合问题
- 排列组合算法之三: 递归法
- 字符串排列组合问题&递归算法(1)
- 字符串排列组合问题&递归算法(2)
- 排列组合递归和非递归算法总结篇
- 打印一维数组的全排列组合,递归算法
- 算法——递归思想解决排列组合问题
- 排列组合算法
- 排列组合算法
- STL介绍
- spring framework4 整合hibernate4
- 基础2:CentOS7 安装JDK8和Tomcat9
- javascript 里的for循环
- Win7+Ubuntu双系统下删除Ubuntu的方法
- 排列组合算法-----使用递归
- JQuery 实现购物栏物品的添加与删除 总价计算案例
- java解析xml方法剖析
- web初学概述(便于理解记忆)
- Java中的变量
- 文件复制
- TCP/IP 建立连接、断开连接的过程
- 条款02:尽量以consts,enum,inline替换#define
- 【C语言】数据结构