
编程之美
文章平均质量分 81
ObserverX
平凡而不平庸追求卓越
展开
-
【编程之美】2.16 求数组中最长递增子序列
问题描述: 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度。 例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长递增子序列的长度为4(如1,2,4,6)。 问题分析: 该问题满足“无后效性”,可以用动态规划来解决。 设原数组为array[N],假设LIS[i]代表以array[i]为最大元素的最长递增子序列的长度。 那么LIS[i+1] 如何转载 2013-09-11 18:19:30 · 676 阅读 · 0 评论 -
@庞果网 字符串消除
题目描述: 给定一个字符串,仅由a,b,c 3种小写字母组成。当出现连续两个不同的字母时,你可以用另外一个字母替换它,如 有ab或ba连续出现,你把它们替换为字母c; 有ac或ca连续出现时,你可以把它们替换为字母b; 有bc或cb 连续出现时,你可以把它们替换为字母a。 你可以不断反复按照这个规则进行替换,你的目标是使得最终结果所得到的字符串尽可能短,求最终结果的最短长度。 输入:字符串。长原创 2013-09-11 22:48:52 · 685 阅读 · 1 评论 -
@庞果网 倒水问题
问题描述: 有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。 我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。 可以进行的操作是: 把一个容器灌满; 把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸); 用一个容器的水倒入另外一个容器,直到倒出水的容器空或者倒入水的容器满。 问是否能够通过有限次操作,使得水原创 2013-09-12 21:42:30 · 824 阅读 · 1 评论