{"trustable":true,"sections":[{"title":"Background","value":{"format":"MD","content":"栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。\n\n栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。\n\n栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。"}},{"title":"Description","value":{"format":"MD","content":"![](CDN_BASE_URL/d5528e831287def44cbc0333c8ef447a?v\u003d1726276573)\n\n宁宁考虑的是这样一个问题:一个操作数序列,$1,2,\\ldots ,n$(图示为 1 到 3 的情况),栈 A 的深度大于 $n$。\n\n现在可以进行两种操作,\n\n1. 将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的 push 操作)\n2. 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的 pop 操作)\n\n使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由 `1 2 3` 生成序列 `2 3 1` 的过程。\n\n![](CDN_BASE_URL/3c5487645837c35de1c9bbc7a6ee7ab4?v\u003d1726276573)\n\n(原始状态如上图所示)\n\n你的程序将对给定的 $n$,计算并输出由操作数序列 $1,2,\\ldots,n$ 经过操作可能得到的输出序列的总数。"}},{"title":"Input","value":{"format":"MD","content":"输入文件只含一个整数 $n$($1 \\leq n \\leq 18$)。\n"}},{"title":"Output","value":{"format":"MD","content":"输出文件只有一行,即可能输出序列的总数目。"}},{"title":"Sample 1","value":{"format":"HTML","content":"\u003ctable class\u003d\u0027vjudge_sample\u0027\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e3\n\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003e5\n\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n"}},{"title":"Hint","value":{"format":"MD","content":"**【题目来源】**\n\nNOIP 2003 普及组第三题"}}]}