/*以123的全排列为例:
1 123
2 132
3 231
4 213
5 312
6 321
*/

/*
	结果可以分为三部分:123 132;	213 231;	312 321;
	对于123 132,去掉1后23可看作是其子问题
*/
import java.io.IOException;

public class PermulateArray{
	static int size;
	static int count=0;
	static char[] charArray;
	
	public static void main(String[] args)throws IOException{
		String input="123";
		size=input.length();
		count=0;
		charArray=new char[size];
		for(int i=0;i<size;++i){
			charArray[i]=input.charAt(i);
		}
		Permulation(size);
	}
	public static void Permulation(int newSize){
		if(newSize==1)
			return;
		for(int i=0;i<newSize;++i){
			Permulation(newSize-1);
			if(newSize==2)
				display();
			rotate(newSize);
		}
	}
	public static void rotate(int newSize){
		int i;
		int position=size-newSize;
		char temp=charArray[position];
		for(i=position+1;i<size;++i){
			charArray[i-1]=charArray[i];
		}
		charArray[i-1]=temp;
	}
	public static void display(){
		System.out.print(++count+" ");
		for(int i=0;i<size;++i)
			System.out.print(charArray[i]);
		System.out.println();
	}
}

posted on 2011-10-06 20:35  Mathida  阅读(176)  评论(0编辑  收藏  举报