首页 > 其他分享 >day37

day37

时间:2024-10-13 11:47:53浏览次数:3  
标签:nums int day37 vector nums1 dp size

最长公共子序列

class Solution {
public:
int longestCommonSubsequence(string text1, string text2) {
vector<vector> dp(text1.size()+1, vector(text2.size()+1, 0));
for(int i = 1; i <= text1.size(); ++i)
{
for(int j = 1; j <= text2.size(); ++j)
{
if(text1[i-1] == text2[j-1])
{
dp[i][j] = dp[i-1][j-1] + 1;
}
else
{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[text1.size()][text2.size()];
}
};

不相交的线

class Solution {
public:
int maxUncrossedLines(vector& nums1, vector& nums2) {
vector<vector> dp(nums1.size()+1, vector(nums2.size()+1, 0));
for(int i = 1; i <= nums1.size(); ++i)
{
for(int j = 1; j <= nums2.size(); ++j)
{
if(nums1[i-1] == nums2[j-1])
{
dp[i][j] = dp[i-1][j-1] + 1;
}
else
{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[nums1.size()][nums2.size()];
}
};

最大子数组和

class Solution {
public:
int maxSubArray(vector& nums) {
vector dp(nums.size(), INT_MIN);
dp[0] = nums[0];
int ret = 0;
int maxvalue = nums[0];
for(int i = 1; i < nums.size(); ++i)
{
dp[i] = max(dp[i-1] + nums[i], nums[i]);
if(dp[i] > maxvalue)
{
maxvalue = dp[i];
}
}
return maxvalue;
}
};
判断子序列

class Solution {
public:
bool isSubsequence(string s, string t) {
vector<vector> dp(s.size()+1, vector(t.size()+1, 0));
for(int i = 1; i <= s.size(); ++i)
{
for(int j = 1; j <= t.size(); ++j)
{
if(s[i-1] == t[j-1])
{
dp[i][j] = dp[i-1][j-1]+1;
}
else
{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[s.size()][t.size()] == s.size();
}
};

标签:nums,int,day37,vector,nums1,dp,size
From: https://www.cnblogs.com/pwangikun/p/18462054

相关文章

  • leetcode 刷题day37动态规划Part06背包问题( 322. 零钱兑换、279.完全平方数、139.单词
    322.零钱兑换思路:每种硬币的数量是无限的,是典型的完全背包问题。但是题目要求等于目标值的最小硬币个数。所以这里需要对动规五部曲进行分析。动规五部曲:1、确定dp数组以及下标的含义dp[j]:凑足总额为j所需钱币的最少个数为dp[j]2、确定递推公式凑足总额为j-coins[i......
  • NOIP2024集训Day37 DP
    NOIP2024集训Day37DPA.[CQOI2011]放棋子设\(f_{i,j,k}\)表示前\(k\)种棋子放了任意\(i\)行、\(j\)列。决策是:在哪些位置填同种颜色的棋子。于是美剧上一个状态的\(i,j\)(表示为\(l,r\)),上一状态\(k_1=k-1\)。设\(g_{i,j,k}\)表示\(k\)个同种颜色的......
  • NOIP2024集训 Day37 总结
    前言今天的题目也是比较快速的做完了。所以先来总结一下。今天是计数专题,组合数居多。以前做过的题目这里就稍稍略过了。MergeTriplets观察到对于能够得到的最终的排列\(p\),对于其中的一个数\(p_i\),不可能做到\(p_i>\max_{j=i+1}^{i+3}p_j\)。感觉是比较显然的,这里就不......
  • day37-测试之抓包工具Charles、Fiddler
    目录一、抓包工具Charles    1.1.Charles是什么    1.2.Charles工作原理    1.3.Charles主要功能    1.4.Charles优点    1.5.Charles安装    1.6.Charles组件介绍        1.7.Charles设置    1.8.C......
  • 代码随想录day37 || 518 零钱兑换,377 组合总和iv,70 爬楼梯
    0-1背包问题在0-1背包问题中,每种物品只能选择一次,因此一旦选择某个物品后,剩余的容量只能放入前面的物品。这就是为什么状态转移方程是:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w(i)]+v(i))这里的dp[i-1][j-w(i)]+v(i)表示选择第(i)个物品后,剩余的容量只能放入前(......
  • 代码随想录算法训练营第36期DAY37
    DAY37先二刷昨天的3道题目,每种方法都写:是否已完成:是。报告:134加油站的朴素法没写对。原因是:在if中缺少了store>=0的判断,只给出了index==i的判断。前进法没写出来。因为忘记了总油量的判断。Sum。注意变量的初始化。分配糖果注意if里面放的是ratings;860柠檬水找零网上摘得思......
  • Day37代码随想录(1刷) 动态规划
    509.斐波那契数斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1) =1F(n)=F(n-1)+F(n-2),其中n>1给定 n ,请计算 F(n) 。示例1:输入:n=2输出:1解......
  • 算法打卡day37|动态规划篇05| Leetcode1049.最后一块石头的重量II、494.目标和、474.
    算法题Leetcode1049.最后一块石头的重量II题目链接:1049.最后一块石头的重量II 大佬视频讲解:最后一块石头的重量II视频讲解 个人思路和昨天的分割等和子集有些相像,这道题也是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。解法......
  • 稀碎从零算法笔记Day37-LeetCode:所有可能的真二叉树
    今天的每日一题,感觉理解的还不够深,有待加深理解题型:树、分治、递归链接:894.所有可能的真二叉树-力扣(LeetCode)来源:LeetCode题目描述给你一个整数 n ,请你找出所有可能含 n 个节点的 真二叉树 ,并以列表形式返回。答案中每棵树的每个节点都必须符合 Node.val==0 ......
  • 代码随想录 day37 单调递增的数字 监控二叉树
    单调递增的数字只想到暴力解法然后超时这里思路是如果从后往前发现不是递增序列那就把前一位--后一位数字变成9然后维护这个变成9的坐标遍历完后把后面的也全部变成9这个对现在的我来说太难了先贴段代码理解一下吧classSolution{intres=0;publicintminCam......