统计
  • 建站日期:2019-12-01
  • 文章总数:2002 篇
  • 评论总数:2124 条
  • 分类总数:21 个
  • 最后更新:11月21日
文章 未分类

JAVA 蓝桥杯算法 全排列 背公式即可

程序员阿鑫
首页 未分类 正文


JAVA蓝桥杯算法全排列背公式即可
-程序员阿鑫-带你一起秃头
-第1
张图片

什么是全排列?

所谓全排列就是把几个字符或数字(以下称为元素),进行全部排列

例如:字符串 abc

那么就可以这样排

abc
acb
bac
bca
cab
cba

把全部元素能用到的排列方式进行全部排列一遍

什么时候用全排列?

有的题目会要求你全部排出几种情况?把所有排列状况按升序输出.....

但有的时候不用

当某一个数非常大并且只输出此类有几种排列方法,有几种方式,几种走法,只输出结果的这种用动态规划

全排列怎么写?

public static void f(int x){
        for(int i = x; i < arrs.length;i++){
            char y = arrs[x];
            arrs[x] = arrs[i];
            arrs[i] = y;
            f(x+1);
            y = arrs[x];
            arrs[x] = arrs[i];
            arrs[i] = y;
        }
    }

只要背会,大部分全排列题都能做!

能不能来个例题?


JAVA蓝桥杯算法全排列背公式即可
-程序员阿鑫-带你一起秃头
-第2
张图片

题目:

对于某个串,比如:“1234”,求它的所有全排列。

并且要求这些全排列一定要按照字母的升序排列。

 

解题:

package com.cxyax.lianxi2;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
/**
 * 标题:全排列

对于某个串,比如:“1234”,求它的所有全排列。
并且要求这些全排列一定要按照字母的升序排列。
 * @author ah xin
 *
 */
public class MainQ2 {
    static Set<String> set = new TreeSet<>();
    static char[] arrs;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        char[] arr = str.toCharArray();
        arrs = arr;
        f(0);
        for(String s : set){
            System.out.println(s);
        }
        System.out.println(set.size());
    }

    public static void f(int x){
        String str = "";
        for(int i = 0; i < arrs.length;i++){
            str += arrs[i]+"";
        }
        set.add(str);

        for(int i = x; i < arrs.length;i++){
            char y = arrs[x];
            arrs[x] = arrs[i];
            arrs[i] = y;
            f(x+1);
            y = arrs[x];
            arrs[x] = arrs[i];
            arrs[i] = y;
        }
    }

}

 站长下课了,不写了,你们自己琢磨琢磨,有什么疑问可以评论....

 

以上是《JAVA 蓝桥杯算法 全排列  背公式即可》的全部内容,

感谢您对程序员阿鑫博客的支持!

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
这篇文章最后更新于2020-10-14,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
JAVA 蓝桥杯 第七届B组 第六题 方格填数 带思路
« 上一篇
JAVA 蓝桥杯 约瑟夫环 LinkedList解法 带思路
下一篇 »

发表评论