摘要:一.最长公共子序列问题(LCS问题) 给定两个字符串A和B,长度分别为m和n,要求找出它们最长的公共子序列,并返回其长度。例如: A = "HelloWorld" B = "loop" 则A与B的最长公共子序列为 "loo",返回的长度为3。此处只给出动态规划的解法:定义子问题dp[i][j]为字符
阅读全文
随笔分类 - Algorithm
算法学习心得
摘要:1.0-1背包的朴素形式 0-1背包问题:给定编号为1,2...n的n个物品和一个容量为C的背包;每个物品的重量为$w_i$,每个物品的价值为$v_i$,求将物品装入背包后,背包能获得的最大价值。其状态转移方程为: $$ dp[i][j] = \begin{cases} \max\{dp[i-1][
阅读全文
摘要:最近做题用到了并查集索性就把自己所掌握的相关知识总结一下。 并查集(union-find sets),CLRS上称为disjoint-set,是一组不相交的动态集合S1,S2,....Sk。它能够实现较快的合并和判断元素所在集合的操作,应用比较广泛,如其求无向图的连通分量个数,利用Kruskar算法
阅读全文
摘要:Q:对于一个连续的数组,求其任意连续的子数组和的最大值。 分析: 1.对于此题,直接应用暴力求解的话,时间复杂度应为O(n^2). 2.此处应用时间复杂度为O(n)的算法来求解,即前缀和的处理。 首先,函数sum(i,j)表示数组从下标i到下标j的连续元素的和。容易想到:sum(i,j) = sum
阅读全文
摘要:时间限制:10000ms 单点时限:1000ms 内存限制:256MB 单点时限:1000ms 内存限制:256MB 描述 There is an integer array A1, A2 ...AN. Each round you may choose two adjacent integers.
阅读全文
摘要:题目大意:输入一个字字符串,输出该字符串中所包含的"word"个数,其中"word"是指连续的字母(大小写均可) 题目思路:其实这是道水题,不过我考虑的时候,太想当然了,我是把空格作为每个子串的分界,遇到一个空格就去判断空格前的子串是否为单词。 然而实际上并不是这样,如果是连续的符号中夹杂着单词的话
阅读全文