Algorithm
文章平均质量分 80
shell_picker
这个作者很懒,什么都没留下…
展开
-
逆波兰式与卡塔兰数
读了我的上篇文章“一个 Lua 的凑24程序”的读者可能会产生这样的疑问:为什么由 4 个数字和 3 个运算符组成的合法的逆波兰式就只有那 5 种?你是怎么穷举的?为什么不写程序自动求出所有的合法逆波兰式,而非要手算? 为了讨论这两个问题,我们先来看下面的问题: 问题1(出栈序列问题):数 1 ~ n 按顺序入栈(栈是后进先出的),任何时刻你可以选择让下一个数入栈,或者让当前栈顶元素出栈(若栈非空)。求所有可能的出栈序列的个数。例:若 n = 2,有两种:进进出出,得到出栈序列:2 1进出进出,得到出原创 2010-12-02 17:00:00 · 1877 阅读 · 0 评论 -
一个 Lua 的凑24程序
上次看到一个“凑24”的题目但想不出来- -b,所以蛋疼地写了个程序来算。。。现在终于知道答案了。。。这个凑24程序没有用搜索或递归之类,想法就是先用逆波兰式枚举所有可能的表达式的形式(这个直接手算枚举),共 5 种:11+1+1+11+11++111++1+111+1++1111+++上面是由 4 个数字和 3 个运算符组成的所有合法的逆波兰式的模式。“1”表示一个数字,而“+”表示一个运算符。然后枚举每一个数字和运算符。总枚举量为:5 * 4! * 4^3 = 7680,枚举量很小,所以直接穷举即可。代原创 2010-11-25 10:53:00 · 2806 阅读 · 6 评论