- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 《算法概论》第八章 部分习题解答
8.8EXACT 4SAT是一个NP问题,通过将3SAT归约到EXACT 4SAT来证明EXACT 4SAT的NP完全性。对于任意的一个3SAT,如果其中的某个子句包含了同一个文字多次,那么可以缩减为一次。如果他同时包含了某个变量的否定和肯定,如(x和x ̅)那么就可以把x去掉。我们就可以在每个子句中添加一些辅助变量,这样就是把每个字据所包含的文字数目扩充到四个。所以把一个3SAT实例转化成了一个E
2017-12-30 10:10:12 581
原创 Leetcode 406. Queue Reconstruction by Height[Medium]
原題地址題目内容題目分析题目的主要意思为,给你一串数组,让你对其进行“排序”,每个元素由两个值构成(a,b),a代表这个字符的大小,b代表有多少个比他大或者等于他的数字排在他前面,这就是最后生成的数组需要满足的条件。 首先我们可以对数组按照a进行从大到小的排序,如果a相同的话,就按照b来排,按照题目的要求,应该是b小的排在前面。定义一个结果数组res,排好序的数组在这个res里面的顺序,就是b的值
2017-12-21 20:16:17 306
原创 LeetCode 646. Maximum Length of Pair Chain [Medium]
原题地址题目内容题目分析题目的意思为找出能相连的最长串的长度,(a,b),(c,d),因为b < c,所以他们是能相连的。 采用动态规划的方法,首先对原来的pair数组进行排序。用dp[n]记录每个pair能形成链的最大长度。设一个变量temp,如果pairs[j][1]代码实现class Solution {public: int findLongestChain(vector<vec
2017-12-14 21:33:42 300
原创 LeetCode 712. Minimum ASCII Delete Sum for Two Strings [Medium]
原题地址题目内容题目分析标准的动态规划问题,题目的意思为删除s1,s2中的字符,使得最后s1=s2,要求使得删除的字符的值的和最小。dp[i][j]为字符串1前i个字符与字符串2前j个字符相等,需要减去的字符值。当s1[i-1]=s2[j-1]时,dp[i][j]=dp[i-1][j-1].当s1[i-1]!=s2[j-1]时,有两种选择,一删除s1的字符,那么dp[i][j]=dp[i-1][j]
2017-12-10 20:43:23 274
原创 LeetCode 413. Arithmetic Slices [Medium]
原题地址题目内容题目分析A[i]-A[i+1] = A[i+1]-A[i+2],这样的式子成为arithmetic,也就是等差数列,题目的意思为,给你一个数组,问最多能分为多少个等差数列,每个数列至少含有3个数字。 一开始想用动态规划的方法,但后面发现暴力求解也挺简单的,就过了。对于每一个A[i]都求出从i开头能分割多少组等差数列出来,然后tot++,一旦不行就从i+1开始继续分,最后返回tot即
2017-12-05 14:23:49 187
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人