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

    1.问题描述:

        一组字符串的全排列,按照全排列的顺序输出,并且每行结尾无空格。

    2.输入:

        输入一个字符串

    3.输入示例:

        请输入全排列的字符串:
        abc

    4.输出示例:

        a b c
        a c b
        b a c
        b c a
        c b a
        c a b

    5.解题思路:

        全排列问题在算法这类问题中属于典型的递归与回溯类问题。这种题目一定要从整体去思考。通过输入示例,我们可以观察到,a,b,c三个字符,都可以放在第一个位置,都可以放在第二个位置,都可以放在第三个位置...根据这个思路,通过我们数学中的全排列公式,有三个位置□□□,第一个位置可以选3个,第二个位置选2个,第三个位置只能选一个。C(1,3)*C(1,2)*C(1,1) (表示不出来...就是数学里面的组合公式)。如果是求组合的个数,则直接利用这个公式相乘,如果打印排列,则如下进行交换,直接在边界条件打印即可,求代码如下:


    import java.util.Scanner;

    public class PaiLie {
        public static void main(String[] args) {
            Scanner scn = new Scanner(System.in);
            System.out.println("请输入全排列的字符串:");
            String s= scn.next();
            char[] shu = s.toCharArray();
            //从第0个位置开始
            pailie(shu,0);
        }
        public static void pailie(char shu[], int k){
            if(k==shu.length){
                for(int i=0;i<shu.length;i++){
                    System.out.print(shu[i] + " ");
                }
                System.out.println();
            }
            for(int i=k;i<shu.length;i++){
                //交换
                {char t = shu[k];shu[k] = shu[i];shu[i] = t;}
                //递归,下一个数去排列
                pailie(shu,k+1);
                //交换回来
                {char t = shu[k];shu[k] = shu[i];shu[i] = t;}
            }
        }
    }

  • 相关阅读:
    从数据库表中查询日期最新的记录
    ArcGIS js api开发环境配置
    HRESULT:0x80070057 (E_INVALIDARG)
    ArcGIS js api三种查询功能
    sql设置字段默认值
    文件后缀与mime类型对应表
    关于dojo自定义类
    android用户登录验证
    java实现QQ互联登录
    springboot实现网站微信扫码登录
  • 原文地址:https://www.cnblogs.com/zzlback/p/8460812.html
Copyright © 2011-2022 走看看