字符全排列java版

文章目录


一、全排列是什么?

从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);   //从下标0开始
 }    

static public void dsf(int step){ 
     
  if(step==string.length()){

//当凑够需要长度时输出,这里长度正好设置为等于总长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,因为i是被装数的下标,而step才是此时需要装凑的数的位置  
             
         check[i]=1;//标记已用               
         dsf(step+1);//进行下一次               
         check[i]=0;//        
    }     
   }        

                return;//不要忘了咯,最后的返回    }}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值