问题:给定指定字符串(ABCCEF)输出其全排列。
运用分治的思想
JAVA:用TreeSet去重(且保持有序)
import java.util.Set; import java.util.TreeSet; public class Main { static Set<String> result=new TreeSet<String>();//用来去掉重复的元素 public static void fullPermutation(char[] data, int flag){ if(flag==data.length-1){ result.add(String.valueOf(data)); } for(int i=flag;i<data.length;i++){ char temp=data[flag];data[flag]=data[i];data[i]=temp; fullPermutation(data,flag+1); temp=data[flag];data[flag]=data[i];data[i]=temp;//回溯 } } public static void main(String[] args) { char[] data="ABCCDE".toCharArray(); fullPermutation(data,0); for(String x: result) System.out.println(x); } }
PYthon: 比较简单:
import itertools result=set() data=list(‘ABCCD‘) for x in itertools.permutations(data,len(data)): result.add(x) for x in sorted(result): print ‘‘.join(x)
时间: 2024-10-25 02:50:54