算法
Zz Apollo
心中有梦,筑梦成真
展开
-
动态规划入门级:骨牌平铺
在一个3 * N(长度为3,宽度为N)的长方形方格中,铺满1X2的骨牌(骨牌个数不限制),给定N,求方案数。● 实例:(图一 -1-1为N=2的所有方案),所以N=2时方案数为3。宽度为3的话,分为三种情况,3*i的方格,分别多出来0块、1块、2块,计作f[i][0], f[i][1], f[i][2]。根据上图可以看出:f[i][0] = f[i-2][0] + f[i-1][1] ...原创 2019-06-08 21:34:38 · 15079 阅读 · 1 评论 -
动态规划入门级:"01""10"串μ变换
题目:对一个“01”串进行一次μ变换被定义为:将其中的"0"变成"10",“1"变成"01”,初始串为"1",求经过N(N <= 1000)次μ变换后的串中有多少对"00"?(由图可知,“1”经过第一次变换成为“01”,第二次变换成为“1001”,经过第三次变换成为“01101001”)思路:设“10”为A,设“01”为B,fA[i]为A经过i次变化后产生的“00”数量,fB[i]为B经...原创 2019-06-09 09:24:25 · 14497 阅读 · 0 评论 -
动态规划-记忆化搜索入门例题3
【例题3】这个问题直接给出了一段求函数w(a, b, c)的伪代码:def w(a,b,c): if a<=0 or b<=0 or c<=0: return 1 elif a>20 or b>20 or c>20: return w(20,20,20) elif a<b and b<c: ...原创 2019-06-09 21:45:08 · 13881 阅读 · 0 评论 -
动态规划-线性模型。n个小朋友过桥最短时间
题目:在一个夜黑风高的晚上,有n个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许一人或两人通过,他们只有一个手电筒,所以每次过桥的两个人其中有一个需要把手电筒送回来,i号小朋友过桥的时间为T[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。题解def text(n, a): a.sort() m = [0 for i in rang...原创 2019-06-09 23:47:11 · 15100 阅读 · 0 评论 -
动态规划-区间模型:添加最少字符使字符串变为回文字符串
题干:给定一个字符串s,在s中的任意位置添加任意字符,求最少添加多少个字符,可以使s变为回文字符串?示例1:字符串"ab",最少添加1个字符"b"使其变为回文字符串"bab"示例2:“a”,最少添加0个字符,使其变为回文字符串"a"示例3:“abca"最少添加1个字符"b”,使其变为回文字符串"abcba"示例4:“abcd"最少添加3个字符,是其变为回文字符串"adbcbda”利用动态...原创 2019-06-10 14:58:32 · 15224 阅读 · 0 评论 -
动态规划-0/1背包问题:每种商品各一件,求背包所装最大价值
题干:现有电脑(价格2000尺寸3)、手机(价格3000尺寸2)、电视(价格1000尺寸4)、收音机(价格500尺寸1)各一件,你有一个背包,背包最大可装尺寸6,问能装的物品总价最高为多少?拓展:如果是任意n多个物品,物品的价格和尺寸分别为price_list[0]、price_list[1]、price_list[2]…price_list[n-1]和size_list[0]、size_lis...原创 2019-06-10 16:17:15 · 14711 阅读 · 0 评论 -
判定括号是否有效
如题:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输...原创 2019-07-07 20:26:48 · 13838 阅读 · 0 评论 -
题:括号生成
如题:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]题解:def generateParenthesis(n): re = [[1,1,'(']] fo...原创 2019-07-07 21:45:15 · 14026 阅读 · 0 评论