import java.util.Scanner;
//给定入栈顺序,求所有出栈顺序
public class OutputStack {
// 思路:每个时刻,当前栈都有两种选择,继续入栈,或者出栈。因此,用递归就可以实现了。
static void all_order(String in,String stack,String out)
{
//字符为空且栈为空,输出字符
if(in.equals("")&&stack.equals(""))
System.out.println(out);
//如果字符未全部入栈,入栈
if(!in.equals(""))
// 模拟入栈的话,假设第一个入栈了,那么剩余输入字符就是(1,in.length()),栈里面就是stack+in.charAt(0)
all_order(in.substring(1,in.length()),stack+in.charAt(0),out);
//如果栈不空,选择出栈
if(!stack.equals(""))
// 模拟出栈的话,输入不变,栈里面就是(0,stack.length()-1),输出字符就是out加栈中最后一个字符
all_order(in,stack.substring(0,stack.length()-1),out+stack.charAt(stack.length()-1));
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String a=input.nextLine();
all_order(a,"","");
}
}
给定入栈顺序,求所有可能的出栈顺序(JAVA实现)
最新推荐文章于 2023-03-20 19:08:10 发布