全排列问题(JAVA和Python实现)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全排列问题(JAVA和Python实现)相关的知识,希望对你有一定的参考价值。
问题:给定指定字符串(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)
以上是关于全排列问题(JAVA和Python实现)的主要内容,如果未能解决你的问题,请参考以下文章