issue: Given the specified string (ABCCEF) outputs its all arranged.
The idea of using divide and conquer
JAVA: Using TreeSet to remove weight (and keep it in order)
ImportJava.util.Set;ImportJava.util.TreeSet; Public classMain {StaticSet<string> result=NewTreeset<string> ();//used to remove duplicate elements. Public Static voidFullpermutation (Char[] Data,intflag) { if(flag==data.length-1) {Result.add (string.valueof (data)); } for(inti=flag;i<data.length;i++){ CharTemp=data[flag];d Ata[flag]=data[i];d ata[i]=temp; Fullpermutation (Data,flag+1); Temp=data[flag];d ata[flag]=data[i];d ata[i]=temp;//Backtracking } } Public Static voidMain (string[] args) {Char[] data= "ABCCDE". ToCharArray (); Fullpermutation (data,0); for(String x:result) System.out.println (x); }}
PYthon: Relatively simple:
Import Itertoolsresult=set () Data=list ('abccd') for in itertools.permutations (Data,len (data)): result.add (x) for in Sorted (Result): print'. Join (x)
Full alignment issues (Java and Python implementations)