/*以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(); } }
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240813180353098-2140851696.jpg)