フル配列実装


ぜんはいち
キー:array[0...n]の全配列はPerm(array,(0...n)=array[i]とPerm(array[0...i-1,i+1 n))の組み合わせ

  
  
  
  
  1. public class TestPerm {  
  2.     public static void main(String[] args){ 
  3.         test1(); 
  4.     }    
  5.     public static void test1(){ 
  6.         String str = "abcde"
  7.         char[] array = str.toCharArray(); 
  8.         TestPerm.perm(array, 0, array.length); 
  9.         System.out.println("Total:"+TestPerm.count); 
  10.     } 
  11.     private static int count = 0
  12.     public static void perm(char[] array, int start, int end){ 
  13.         if(start==end){ 
  14.             count++; 
  15.             System.out.println(array); //
  16.             return
  17.         } 
  18.         for (int i = start; i < end; i++) { 
  19.             swap(array, start, i); 
  20.             perm(array, start+1, end); 
  21.             swap(array, start, i); 
  22.         } 
  23.     } 
  24.  
  25.     private static void swap(char[] array, int a, int b) { 
  26.         if(a!=b){ 
  27.             array[a] = (char) (array[a]^array[b]); 
  28.             array[b] = (char) (array[b]^array[a]); 
  29.             array[a] = (char) (array[b]^array[a]); 
  30.         }            
  31.     }