
动态规划
文章平均质量分 50
sunshine_lyn
欢迎访问个人博客: https://www.elainelv.github.io/
展开
-
LeetCode 第179场周赛
5352. 生成每种字符都是奇数个的字符串char * generateTheString(int n){ char *s=(char*)malloc(sizeof(char)*(n+1)); for(int i=0;i<n-1;i++) s[i]='a'; if(n%2==0) s[n-1]='b'; else ...原创 2020-03-14 20:20:18 · 324 阅读 · 0 评论 -
动态规划求子序列和子串问题
LeetCode子序列问题:300. 最长上升子序列;673. 最长递增子序列的个数;1143. 最长公共子序列;516. 最长回文子序列LeetCode子串问题:5. 最长回文子串;14. 最长公共前缀300. 最长上升子序列int max(int a,int b){ return a>b?a:b;}int lengthOfLIS(int* nums, int ...原创 2020-03-14 11:15:39 · 510 阅读 · 0 评论 -
LeetCode322. 零钱兑换
322. 零钱兑换#include<stdlib.h>#include<algorithm.h>#define INF 0x3f3f3f3fint min(int a,int b){ return a<b?a:b;}int coinChange(int* coins, int coinsSize, int amount){ int i,...原创 2020-03-08 10:41:05 · 227 阅读 · 0 评论 -
LeetCode 第178场周赛
1.有多少小于当前数字的数字/** * Note: The returned array must be malloced, assume caller calls free(). */int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize){ int i,j; int *tmp=(...原创 2020-03-02 20:55:06 · 379 阅读 · 0 评论 -
LeetCode第 20 场双周赛
1.根据数字二进制下 1 的数目排序/** * Note: The returned array must be malloced, assume caller calls free(). */ int cal(int num){ int sum=0; while(num){ sum+=num%2; num/=2; }...原创 2020-02-26 15:42:59 · 331 阅读 · 0 评论 -
买卖股票的最佳时期
参考:一个通用方法团灭 6 道股票问题以下代码是按照上述思路用C语言写的,供参考!第一题:k=1,买卖股票的最佳时期int max(int a,int b){ return a>b?a:b;}int maxProfit(int* prices, int pricesSize){ int i,j,dp[pricesSize+1][2]; if(pric...原创 2020-02-14 16:40:12 · 304 阅读 · 0 评论 -
LeetCode 97. 交错字符串
给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出: true示例 2:输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出: false链接:https://lee...原创 2020-02-13 15:46:30 · 183 阅读 · 0 评论 -
leetcode 72. 编辑距离
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose...原创 2020-02-09 15:10:01 · 220 阅读 · 0 评论 -
leetcode174. 地下城游戏
一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他...原创 2020-02-06 20:41:28 · 1972 阅读 · 0 评论 -
leetcode300. 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n...原创 2020-02-06 14:28:28 · 312 阅读 · 0 评论 -
leetcode213. 打家劫舍 II
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: ...原创 2020-02-05 23:54:55 · 304 阅读 · 0 评论 -
leetcode.877 石子游戏
亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。 假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得...原创 2020-02-05 17:47:18 · 445 阅读 · 0 评论 -
与13有关(数位dp)
找出1~n范围内含有13并且能被13整除的数字的个数.#include <cstdio>#include <cstring>#include <iostream>#include <algorithm> using namespace std;int n, shu[20], dp[20][20][10]; int dfs(int len...转载 2018-03-21 13:00:23 · 441 阅读 · 0 评论 -
整数拆分
题目描述:一个整数总可以拆分为2的幂的和,例如:7=1+2+47=1+2+2+27=1+1+1+47=1+1+1+2+27=1+1+1+1+1+27=1+1+1+1+1+1+1总共有六种不同的拆分方式。再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。用f(n)表示n的不同拆分的种数,例如f(7)=6.要求编写程序,读入n(不超过100000...转载 2018-03-07 12:27:30 · 597 阅读 · 0 评论 -
放苹果(动态规划)
题目描述把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?注意:5、1、1 和 1、5、1 是同一种分法,即顺序无关。输入描述:输入包含多组数据。每组数据包含两个正整数 m和n(1≤m, n≤20)。输出描述:对应每组数据,输出一个整数k,表示有k种不同的分法。示例1输入7 3输出8思路:动态规划。比较苹果数m和盘子数n。 当n>m时,至少有n-...原创 2018-03-07 20:33:29 · 1136 阅读 · 0 评论 -
最小邮票数(动态规划)
题目描述 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值。 如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分、3分、4分即可。输入描述: 有多组数据,对于每组数据,首先是要求凑成的邮票总值M,M<100。然后是一个数N,N〈20,表示有N张邮票。接下来是N个正整数,分别表示这N张邮票的面值,且以升序排列。输出描述: 对...原创 2018-03-07 22:28:27 · 599 阅读 · 0 评论 -
拦截导弹(最长不递增子序列)
题目描述某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。 输入描述:每组输入有两行,第一行,输入雷达...原创 2018-03-09 15:08:00 · 211 阅读 · 0 评论 -
最小花费(动态规划)
题目描述在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下: 距离s 票价 0<S<=L1 C1 L1<S<=L2 C2 L2<S<=L3 C3 输入保证0<L1<L2<L3<10^9,0<C1<C2<...原创 2018-03-10 15:50:49 · 2070 阅读 · 0 评论 -
最大子矩阵(动态规划)
题目描述已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最大子矩阵是 9 2 -4 1 -1 8 这个子矩阵的大小是15。输入描述:输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)。再后...原创 2018-03-11 11:11:42 · 3270 阅读 · 0 评论 -
最大报销额(01背包问题)
题目描述 现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。输入描述: 测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q 是给定的报销额度,N(...原创 2018-03-18 14:53:34 · 566 阅读 · 0 评论 -
神奇的口袋(动态规划,搜索)
题目描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入描述:输入的第一行是正整数n (1 <= n &l...原创 2018-03-14 10:45:46 · 1194 阅读 · 0 评论 -
不要62(数位dp)
不要62Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 51833 Accepted Submission(s): 19723Problem Description杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经...转载 2018-03-21 12:35:20 · 338 阅读 · 0 评论 -
EOJ 2857. 编辑距离
http://acm.ecnu.edu.cn/problem/2857/思路: 动态规划,dp[i][j]表示源串S前i个字符转成目标串T的前j个字符需要的最短编辑距离。那么我们有如果S[i] == T[j]那么直接把dp[i][j] 就等于 dp[i-1][j-1],因为这个相等,就不需要操作次数如果S[i] != T[j] 那么我们有三种选择,增加、删除以及修改,我们先考虑修改,如果把S...转载 2018-02-09 16:26:11 · 365 阅读 · 0 评论