排列组合算法-----使用递归

xiaoxiao2021-02-28  91

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(); } } } }
转载请注明原文地址: https://www.6miu.com/read-58769.html

最新回复(0)