首页 > 编程语言 >深信服24届秋招算法:所有可能的出栈顺序

深信服24届秋招算法:所有可能的出栈顺序

时间:2023-09-21 09:33:55浏览次数:43  
标签:24 出栈 seq 届秋招 res new stk ans visited

public class Main {
    private static final Scanner in = new Scanner(System.in);
    public static void main(String[] args) throws UnsupportedEncodingException {
        //echo();
        String s = "abcdef";
        char [] seq = s.toCharArray();
        boolean [] visited = new boolean[seq.length];
        List<Character> res = new ArrayList<>();
        List<List<Character>> ans = new LinkedList<>();
        Stack<Character> stk = new Stack<>();
        bt(seq, visited, res, ans, stk);
        for (List<Character> cs : ans){
            for(char c : cs){
                System.out.print(c);
            } System.out.println();
        }

    }
    static void bt(char [] seq, boolean [] visited, List<Character> res, List<List<Character>> ans, Stack<Character> stk){
        if(res.size() == seq.length){
            // 在这里验证 是否是可行出栈顺序
            for(int i = 0, j = 0; i < seq.length; i++){
                stk.push(seq[i]);
                while(!stk.isEmpty() && stk.peek() == res.get(j)){
                    stk.pop();
                    j++;
                }
            }
            if(stk.isEmpty())
                ans.add(new ArrayList<>(res));
            stk.clear();
            return;
        }
        for(int i = 0; i < seq.length; i++){
            if(visited[i]) continue;
            visited[i] = false;
            res.add(seq[i]);

            bt(seq, visited, res, ans, stk);

            visited[i] = false;
            res.remove(res.size() - 1);
        }
    }
}

标签:24,出栈,seq,届秋招,res,new,stk,ans,visited
From: https://www.cnblogs.com/luoyicode/p/17719109.html

相关文章

  • 末流院校24届秋招逆袭之路!
    几年前,我在看新三国时,有一段记忆深刻的话,司马懿获胜之后说:“我挥剑只有一次,却磨了十几年”。但万万没想到的是,这句话在几年后的今天,在我的徒弟身上应验了。事情是这样的,我徒弟是今年24届的学生,他在今年7.4号找到我,说自己马上就要秋招找工作了,但现在技术还没学好,并发编程、JVM......
  • 24_linux c多线程
    linuxc多线程shell脚本创建mkdirEMprjcdEMprj/code.在vscode中新建CMakeLists.txt文件,编写内容:cmake_minimum_required(VERSION2.8)project(demo)add_executable(mainmain.c)新建main.c文件,编写内容:#include<stdio.h>intmain(intargc,charcon......
  • 【漏洞复现】JumpServer未授权访问漏洞(CVE-2023-42442)
    1、简介JumpServer是一款符合4A规范的开源堡垒机,帮助企业以更安全的方式管控和登录各种类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。2、漏洞描述JumpServer在3.0.0-3.6.3版本存在未授权访问漏洞。由于系统权限配置存在不合理,导致未授权攻击者可以直接访问......
  • 【POJ 2488】A Knight‘s Journey 题解(深度优先搜索)
    背景骑士厌倦了一次又一次地看到同样的黑白方块,决定去旅行全世界每当骑士移动时,它是一个方向上的两个正方形和一个垂直于这个方向的正方形。骑士的世界就是他生活的棋盘。我们的骑士生活在一个棋盘上,这个棋盘的面积比普通的8*8棋盘小,但它仍然是矩形的。你能帮助这位冒险的骑士制......
  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记2
    20211306密码系统设计与实现课程学习笔记2学习任务详情自学教材第九章,提交学习笔记本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文件中考虑字符读写,行读写,任意位......
  • 2001-12-24-404
    layout:commentstitle:404permalink:/404#带`/`后缀的被判定成目录,不会被访问到jekyll-theme-WuK:comments:append:|<scriptsrc='https://qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js'async='async'......
  • 2001-12-24-tags
    layout:pagetitle:标签permalink:/tags/jekyll-theme-WuK:default:sidebar:open:truetags:pie_chart:#显示一个标签的饼状统计图,需要引入mermaidenable:falsecount:true#统计每个标签下文章的数量toc:#在正文里显示一个......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第二周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第二周学习笔记 一、任务要求自学教材第九章,提交学习笔记(10分)本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记2(必做)
    学习笔记2C语言文件操作内容知识点总结运用ChatGPT进行苏格拉底挑战,发现问题与解决思路实践过程截图C语言文件操作内容知识点总结C语言文件基础操作字符读写、行读写、任意位置读写数据结构读写结构化从文本文件操作二进制文件与文本文件转换C语言文件基础操作1.......
  • NOI2024省选训练赛01
    NOI2024省选训练赛01时间:2023.9.16目录NOI2024省选训练赛01A.t3DescriptionConstraintsSolutionB.LifeDescriptionConstraintsSolutionA.t3TimeLimit:4sec/MemoryLimit:512MBDescription维护一个长度为\(n\)的数列\(a_i\),支持如下几种操作,操作有\(m\)次。\(1......