class Program
{
static void Main(string[] args)
{
Console.WriteLine("输入一个正整数:");
string nStr = Console.ReadLine();
int n;
while(true)
{
if (int.TryParse(nStr, out n))
{
var stack = new Stack<int>();
var outList = new List<int>();
int count = 0;
Fun(1, n, stack, outList,ref count);
Console.WriteLine($"总计{count}种出栈方式。");
Console.WriteLine("输入一个正整数:");
nStr = Console.ReadLine();
}
else
{
nStr = Console.ReadLine();
}
}
}
private static void Fun(int x, int n, Stack<int> stack, List<int> outList,ref int count)
{
if (outList.Count == n)
{
count++;
Console.WriteLine(string.Join(',', outList));
}
if (x <= n)
{
stack.Push(x);
Fun(x + 1, n, stack, outList, ref count);
stack.Pop();
}
if(stack.Count > 0)
{
var temp = stack.Peek();
stack.Pop();
outList.Add(temp);
Fun(x, n, stack, outList, ref count);
stack.Push(temp);
outList.RemoveAt(outList.Count - 1);
}
}
}
求入栈顺序为1234……N的序列的所有可能的出栈序列
猜你喜欢
转载自www.cnblogs.com/wj033/p/9124249.html
今日推荐
周排行