文章目录
一、全排列是什么?
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
也就是不重复的组合出全部的可能性。
公式:全排列数f(n)=n!(定义0!=1)
二、java代码
import java.util.Scanner; public class 全排列 { static Scanner scanner=new Scanner(System.in); static String string=scanner.next(); static char aChar[]=new char[string.length()]; static int check[]=new int[string.length()]; public static void main(String[] args) { dsf(0); } static public void dsf(int step){ if(step==string.length()){//当凑够需要长度时,输出 System.out.println(String.valueOf(aChar));//将char类型全部转为string类型输出,切记不要用tostring,tostring未重写前都是地址值 return;//返回,吐出此时的位置,并返回到上一个递归选择处 } for (int i=0;i<string.length();i++){//for循环遍历到全部的组合数的个数(因为这样才能使每次递归时排列检查到每个),即'string'的长度 if(check[i]==0){//用来检测或者说标记是否用过,全排列不能重复使用 aChar[step]=string.charAt(i);//将新装的数放进achar数组,用于凑够后的输出,注意是用achar【step】在step的位置装,而非i check[i]=1;//标记已用 dsf(step+1);//进行下一次 check[i]=0;// } } return;//不要忘了咯,最后的返回 } }