第五届蓝桥杯Java B——扑克序列

A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。

要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。

请填写出所有符合要求的排列中,字典序最小的那个。

例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案

import java.util.Set;
import java.util.TreeSet;

public class Main {
    static char[] arr = {'A','A','2','2','3','3','4','4'};
    static char[] res = new char[8];
    static int[] book = new int[8];
    static Set<String> set = new TreeSet<String>();
    public static void main(String[] args) {
        dfs(0);
        for (String s : set)
            System.out.println(s);
    }

    private static void dfs(int idx) {
        if (idx == 8) {
            if (check())
                set.add(new String(res));
        } else {
            for (int i = 0; i < 8; i++)
                if (book[i] == 0) {
                    book[i] = 1;
                    res[idx] = arr[i];
                    dfs(idx + 1);
                    book[i] = 0;
                }
        }
    }

    static boolean check() {
        String str = new String(res);
        return str.lastIndexOf("A") - str.indexOf("A") == 2 &&
               str.lastIndexOf("2") - str.indexOf("2") == 3 && 
               str.lastIndexOf("3") - str.indexOf("3") == 4 && 
               str.lastIndexOf("4") - str.indexOf("4") == 5;
        }
}

原文 

https://www.wmathor.com/index.php/archives/1240/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 第五届蓝桥杯Java B——扑克序列

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址