当前位置: 首页 > news >正文

输出所有可能的出栈顺序

abc的所有可能的出栈顺序 

递归三部曲:

1.确定返回值和参数的类型:

无返回值

要入栈元素的下标n

栈 Stack<Character>

字符串out记录出栈路径

要入栈的字符串 String temp

2.确定递归结束条件

当n==temp.length时表示字符串都入栈了

当栈为空时表示之前入栈的字符都出栈了

递归结束条件:

n == temp.length() && stk.isEmpty()
3.确定单层逻辑

入栈,将下标为n的元素入栈,入栈元素下标n加1

 fun(n + 1, stk, out, temp);

出栈,出栈路径out拼接上栈顶元素,栈顶元素出栈,入栈元素下标不变

 fun(n, stk, temp1, temp);

   if (n < temp.length()) {//入栈stk.push(temp.charAt(n));fun(n + 1, stk, out, temp);stk.pop();}if (!stk.isEmpty()) {//出栈Character peek = stk.peek();String temp1 = out + stk.pop();fun(n, stk, temp1, temp);stk.push(peek);}

总体代码: 

public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String temp = in.next();fun(0, new Stack<Character>(), "", temp);}static void fun(int n, Stack<Character> stk, String out, String temp) {if (n == temp.length() && stk.isEmpty()) {System.out.println(out);return;} else {if (n < temp.length()) {//入栈stk.push(temp.charAt(n));fun(n + 1, stk, out, temp);stk.pop();}if (!stk.isEmpty()) {//出栈Character peek = stk.peek();String temp1 = out + stk.pop();fun(n, stk, temp1, temp);stk.push(peek);}}}}


http://www.mrgr.cn/news/53286.html

相关文章:

  • java-uniapp小程序-引导关注公众号、判断用户是否关注公众号
  • 机器学习“捷径”:自动特征工程全面解析(附代码示例)
  • 数字图像处理:图像分割应用
  • Linux C-线程相关函数1
  • 抖音视频制作怎么暂停画面,抖音视频怎么让它有暂停的效果
  • c语言必备知识-->文件操作(内存与磁盘交互)
  • llama gguf大模型文件合并
  • Navigation2 算法流程
  • C++标准模板库--vector
  • PyTorch 介绍
  • oracle10g运维:使用pl/sql连接window2003的oracle10g敲黑马程序员的select语句练习。
  • Spring Security 如何进行权限验证
  • tomcat catalina log 出现乱码(SpringMvc)
  • 机器视觉基础系列四—简单了解背景建模算法
  • OPPO通讯录备份5个实用技巧
  • 第21~22周Java主流框架入门-Spring 3.SpringJDBC事务管理
  • 跟我学C++中级篇——优化的整体分析
  • 基于vue框架的的大学校园社团管理系统q00q2(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 外包干了2个月,技术明显退步
  • JavaScript 第20章:Web Workers