public class Permutation { private int[] a; public Permutation(int[] a) { this.a = a; } public boolean isOk(int b,int e){//判断是否重复 if(b < e){ for(int i = b; i < e; i ){ if(a[i] == a[e]) return false; } } return true; } public void permutation(int k){ if(k >= a.length){ print(); }else{ for(int i = k; i < a.length; i ){ if(isOk(k,i)){ swap(i,k); permutation( k 1 ); swap(i,k); } } } } private void swap( int i, int k ) { int temp = a[i]; a[i] = a[k]; a[k] = temp; } private void print() { for( int i = 0; i < a.length; i ) { System.out.print(a[i] " "); } System.out.println(); } public static void main( String[] args ) { Permutation p = new Permutation(new int[]{1,2,2,2}); p.permutation( 0 ); } } 运行:C:\poj>java Permutation1 2 2 22 1 2 22 2 1 22 2 2 1