趣味题目
文章平均质量分 61
linulysses
这个作者很懒,什么都没留下…
展开
-
[C/C++] 把一个整型整数转成字符串
问题描述:写一个函数,接受一个整数(假定用int表示),输出该整数的字符串形式。采用如下函数原型: void itoa ( int val, char* buf ); 这里假定buf足够大以容纳任何int类型数值的字符串。 这个问题,初看好像没有什么难度。如果是0,就直接输出0;如果是正数,就通过取模(%)和求商(/)运算可以逐位取得该整数的数字,并把它们放到bu原创 2010-04-28 14:14:00 · 5480 阅读 · 1 评论 -
聪明的打字员 -- ACM PKU 1184 解题报告
<br />问题描述: 阿兰是某机密部门的打字员,她现在接到一个任务:需要在一天之内输入几百个长度固定为6的密码。当然,她希望输入的过程中敲击键盘的总次数越少越好。<br />不幸的是,出于保密的需要,该部门用于输入密码的键盘是特殊设计的,键盘上没有数字键,而只有以下六个键:Swap0, Swap1, Up,Down, Left,Right,为了说明这6个键的作用,我们先定义录入区的6个位置的编号,从左至右依次为1,2,3,4,5,6。下面列出每个键的作用:<br />Swap0:按原创 2010-06-23 08:43:00 · 2159 阅读 · 0 评论 -
Longest Palindrome (最长回文子串)
一个序列(字符串)S=a1a2...an 的倒置 S 为 anan-1...a1。而 S 的子串定义为 S 中任何连续的一部分,如 aiai+1...aj 是 S 的一个子串,但aiai+2... 则不是 S 的子串。如果一个序列 S=S,则 S 称为回文序列。本文接下来将研究一个有趣的问题:给定一个序列 S,找出 S 中最长的回文子串。 在详细分析各个算法之前,先给出一个概览:简单的原创 2010-05-30 08:03:00 · 15119 阅读 · 5 评论 -
最大正方形 (Largest Square)
在最大长方形问题中,我们探讨了如何寻找最大 1-聚类。因为正方形是长方形的一个特例,因此,前面讨论的算法也可以应用。然后,正方形在某种意义上是一维的,即,只要知道边的长,就可以确定一个正方形;而长方形是二维的,需要知道两个边长。这个不同,我们猜测,当我们依然采用动态规划来解决问题时,可以把时间复杂度降一维,即为O(mn)。为了完整性,在这里给出问题描述: 有一个 m x n 的矩阵,元素为原创 2010-05-31 05:26:00 · 2605 阅读 · 0 评论 -
约瑟夫 (Joseph) -- ACM PKU 1012 解题报告
问题描述:The Josephs problem is notoriously known. For those who are notfamiliar with the original problem: from among n people, numbered 1, 2,. . ., n, standing in circle every mth is going to be ex原创 2010-05-25 15:33:00 · 4718 阅读 · 1 评论 -
Flip and Shift -- ACM PKU 1063 解题报告
问题描述:This puzzle consists of a random sequence of m black disks and n whitedisks on an oval-shaped track, with a turnstile capable of flipping(i.e., reversing) three consecutive disks or shifting原创 2010-05-26 16:13:00 · 1349 阅读 · 0 评论 -
Sum - ACM PKU 1844 解题报告
对于 POJ 1844,本文给出了一个时间和空间复杂度都为 O(1) 的算法。同时,也分析了一个可能的动态规划思路。原创 2010-07-18 16:15:00 · 1178 阅读 · 0 评论 -
名人 (Celebrity)
问题描述: 在一个聚会上有 n 个人,其中有一个名人,大家都认识他,但他却不认识所有其他人。现在请你只通过询问来宾 x 是不是认识来宾 y 的方式把这个名人找出来。最多只能使用 O(n) 次询问。当我第一次听到这个问题是,我觉得这题是反直觉的:O(n) 能够做到?随机找一个人,比如说 x,要确定是不是所有人都认识他,就要 O(n) 的时间,确定他是不是不认识所有其他人,也要O(n) 时间。问题原创 2010-05-18 08:56:00 · 1817 阅读 · 0 评论 -
寻找遗失的整数 (Finding The Missing Integer)
问题描述: 大小为 n 的数组 A 中包含了 [0,n] 中的除了 x 的所有其它整数。找出 x。问题很简单,如果不加约束条件的话。约束一: (in place) 只用 O(1) 的额外空间,并要求 O(n) 时间。约束二: 假定A 的元素都用二进制表示。我们不能直接访问整个元素。允许的操作是 fetch(i,j),它返回第 i 个元素的第 j 个 bit,所用时间为O(1)。用 O(原创 2010-05-17 02:22:00 · 1741 阅读 · 0 评论 -
最大长方形 (Maximum Submatrix & Largest Rectangle)
在这篇文章里,我将探讨几个和求最大长方形相关的题目,并试图说明如何把一些相对复杂的问题化归成简单的易解的问题。这里的最大,可以指长方形内所有元素之各最大,也可以指面积最大。问题一(最大和子矩阵): 有一个 m x n 的矩阵,矩阵的元素可正可负。请找出该矩阵的一个子矩阵(方块),使得其所有元素之和在所有子矩阵中最大。(问题来源:http://acm.pku.edu.cn/JudgeOn原创 2010-05-15 06:53:00 · 9571 阅读 · 4 评论 -
包含所有指定字符的最小子串(shortest substring containing all given characters)
问题描述:给定一个字符集合 must [0,...,m-1 ] 和一个字符串str [0,...,n-1 ]。假定 n >= m 。找出 str 中包含 must 中所有字符的最短子串。 最直接和简单的算法当然是暴力搜索(brute-force search): minimal := str [0,...,n-1 ]for i原创 2010-04-28 14:19:00 · 2775 阅读 · 1 评论 -
最长递增子序列 (Longest Increasing Subsequence)
问题描述: 给定一个序列 An = a1,a2, ... , an,找出最长的子序列使得对所有 i j,ai aj。显然,暴力算法的时间复杂度是 O(2n),因为搜索空间呈指数级增长。对于这种问题,如果要找复杂度为多项式时间的算法,自然而然地会想到动态规划。首先,要找出一种方法原创 2010-05-05 13:48:00 · 13772 阅读 · 3 评论