随笔分类 - ACM
摘要:题目说明: 假设有个集合拥有n个元素,任意的从集合中取出m个元素,则这m个元素所形成的可能子集有那些? 题目解析: 假设有5个元素的集合,取出3个元素的可能子集如下: {1 2 3}、{1 2 4 }、{1 2 5}、{1 3 4}、{1 3 5}、{1 4 5}、{2 3 4}、{2 3 5}、{2 4 5}、{3 4 5} 这些子集已经使用字典顺序排列,如此才可以观察出一些规则: ...
阅读全文
摘要:题目说明: 将一组数字、字母或符号进行排列,以得到不同的组合顺序,例如1 2 3这三个数的全排列有:1 2 3、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1。 题目解析: 设一组数p = {r1, r2, r3, … ,rn}, 全排列为perm(p),pn = p – {rn}。 则perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), …...
阅读全文
摘要:题目说明: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人 开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋...
阅读全文
摘要:题目说明: 洗扑克牌的原理其实与乱数排列是相同的,都是将一组数字(例如1~N)打乱重新排列,只不过洗扑克牌多了一个花色判断的动作而已。 题目解析: 初学者通常会直接想到,随机产生1~N的随机数并将之存入阵列中,后来产生的随机数存入阵列前必须先检查阵列中是否已有重复的数字,如果有这个数就不存入,再重新产生下一个数,运气不好的话,重复的次数就会很多,程式的执行速度就很慢了,这不是一个好方法。以1~...
阅读全文
摘要:题目说明:通过将中序式转换为后序式,不用处理运算子先后顺序问题,只要依序由运算式由前往后读取即可。题目解析:运算时由后序式的前方开始读取,遇到运算元先存入堆叠,如果遇到运算子,则由堆叠中取出两个运算元进行对应的运算,然后将结果存回堆叠,如果运算式读取完 毕,那么堆叠顶的值就是答案了,例如我们计算12...
阅读全文
摘要:题目说明:平常所使用的运算式,主要是将运算元放在运算子的两旁,例如a+b/d这样的式子,这称之为中序(Infix)表示式,对于人类来说,这样的式子很容易理 解,但由于电脑执行指令时是有顺序的,遇到中序表示式时,无法直接进行运算,而必须进一步判断运算的先后顺序,所以必须将中序表示式转换为另一种表示方 ...
阅读全文
摘要:题目说明:蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的基本原理为以乱数配合面积公式来进行解题,这种以机率来解题的方式带有赌博的意味,虽然在精确度上有所疑虑,但其解题的思考方向却是个值得学习的方式。题目解析:蒙地卡罗的解法适用于与面积有关的题目,例如求PI值或椭圆面积,...
阅读全文
摘要:题目说明: 一种衡量两个字符串之间的差异性的方法是,计算两个字符串转换时候需要的最少操作,需要的操作越少说明这两个字符串越相似。 题目解析: 假设字符串的操作只有三种: 插入一个字符; 删除一个字符; 替换一个字符; 两个字符串之间的编辑距离定义为:从字符串str1到str2的最少的操作次数。首先,编辑距离是不会大于str1.length + str2.length的。假设求字符A、B...
阅读全文
摘要:题目说明: 在这个问题中,将用英语给你一个或多个整数。你的任务是将这些数字转换成整型表示。数字范围从-999,999,999到999,999,999.下面是你的程序必须考虑的详尽的英语单词表: negative, zero, one, two, three, four,five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fou...
阅读全文
摘要:题目说明: 今日的一些高阶程式语言对于字串的处理支援越来越强大(例如Java、C#、Perl等),不过字串搜寻本身仍是个值得探讨的课题,在这边以Boyer- Moore法来说明如何进行字串说明,这个方法快且原理简洁易懂。 题目解析: 串搜寻本身不难,使用暴力法也可以求解,但如何快速搜寻字串就不简单了,传统的字串搜寻是从关键字与字串的开头开始比对,例如 Knuth-Morris-Pratt 演算...
阅读全文
摘要:题目说明: 现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。 题目解析: 单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树(decision tree),使用分析与树状图来协助求解。一个简单的状况是这样的,...
阅读全文
摘要:题目说明: 西洋棋中的皇后可以直线前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的放置在棋盘上,1970年与1971年,E.W.Dijkstra与N.Wirth曾经用这个问题来讲解程式设计之技巧。 题目解析: 关于棋盘的问题,都可以用递回求解,然而如何减少递回的次数?在八个皇后的问题中,不必要所有的格子都检查过,例如若某列检查过,该该列的其它格子就不用再检查了,这个方...
阅读全文
摘要:POJ Exponentiation解题
阅读全文
浙公网安备 33010602011771号