zoukankan      html  css  js  c++  java
  • 全排列 java实现

    本博 转载自 https://blog.csdn.net/u013309870/article/details/68941284

    从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
    例如:

    1 、2 、3三个元素的全排列为:

    {1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}。
     

     1 public class HelloWorld {
     2     public static void main(String []args) {
     3        Permutation(new char[]{'1','2','3'},0);
     4     }
     5     
     6     
     7     public static void Permutation(char chs[],int start )
     8     {
     9         if(start==chs.length-1)
    10         {
    11             System.out.println(chs);
    12             //如果已经到了数组的最后一个元素,前面的元素已经排好,输出。Arrays.toString(chs);
    13         }
    14         for(int i=start;i<=chs.length-1;i++)
    15         {
    16         //把第一个元素分别与后面的元素进行交换,递归的调用其子数组进行排序
    17                 Swap(chs,i,start);
    18                 Permutation(chs,start+1);
    19                 Swap(chs,i,start);
    20         //子数组排序返回后要将第一个元素交换回来。  
    21         //如果不交换回来会出错,比如说第一次1、2交换,第一个位置为2,子数组排序返回后如果不将1、2
    22         //交换回来第二次交换的时候就会将2、3交换,因此必须将1、2交换使1还是在第一个位置 
    23         }
    24     }
    25 
    26     
    27      public static void Swap(char chs[],int i,int j)
    28     {
    29         char temp;
    30         temp=chs[i];
    31         chs[i]=chs[j];
    32         chs[j]=temp;
    33     }
    34 }

    运行结果

    123
    132
    213
    231
    321
    312

    2. ch[] = {'1','2','1'}的情况

    加一个判断解决      交换的两个字符值相等 ,跳过

  • 相关阅读:
    HDU
    2015 NCPC Problem G-Goblin Garden Guards
    二分答案
    多校 HDU-6312 Game (博弈)
    唯一分解定理
    欧拉函数
    发布系统遇到的问题解决
    ASP.Net数据导出Excel的几种方法
    项目管理计划书模版
    sql server2008附加数据库5120错误
  • 原文地址:https://www.cnblogs.com/kwaitfort/p/10459724.html
Copyright © 2011-2022 走看看