算法总结归纳(第十天)(动态规划第三部分)(线性dp)

目录

一、简单线性dp

1、最长递增子序列

①、题目描述

②、解题思路

③、代码实现

2、最长连续递增序列

①、题目描述

②、解题思路

③、代码实现

3、最长重复子数组

①、题目描述

②、解题思路

③、代码实现

4、最长公共子序列

①、题目描述

②、解题思路

③、代码实现

5、不相交的线

①、题目描述

②、解题思路

③、代码实现

6、最大子序和

①、题目描述

②、解题思路

③、代码实现

7、判断子序列

①、题目描述

②、解题思路

③、代码实现

二、编辑距离问题 

1、不同的子序列

①、题目描述

②、解题思路

③、代码实现

2、两个字符串删除操作

①、题目描述

②、解题思路

③、代码实现

3、最短编辑距离

①、题目描述

②、解题思路

③、代码实现

4、编辑距离

①、题目描述

输入格式

输出格式

数据范围

输入样例:

输出样例:

②、解题思路

③、代码实现


一、简单线性dp

1、最长递增子序列

①、题目描述

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例 1:

输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

②、解题思路

题目链接:最长递增子序列

1、确定dp数组含义

dp数组表示以当前字母结尾,范围中的递增子序列的最大长度。

2、递推公式

if(nums[i] > nums[j])
                dp[i] = max(dp[i], dp[j] + 1);
 

3、初始化

所有数组均初始化成1.

4、遍历顺序

双层遍历,从前往后。

③、代码实现

int lengthOfLIS(vector<int>& nums) {
        int n = nums.size();
        int dp[2510];
        int res = 0;
        for(int i = 0; i < n; i++){
            dp[i] = 1;
            for(int j = 0; j<=i; j++){
                if(nums[i] > nums[j])
                dp[i] = max(dp[i], dp[j] + 1);
                res = max(res, dp[i]);
            }
        }
        return res;
    }

2、最长连续递增序列

①、题目描述

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 rl < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

示例 1:

输入:nums = [1,3,5,4,7]
输出:3
解释:最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。

②、解题思路

题目链接:最长连续递增递增

1、确定dp数组含义

dp[]数组表示,以当前位置为结尾时,连续的递增序列的长度。

2、递推公式

if(nums[i] > nums[i - 1]) dp[i] = dp[i - 1] + 1;
            else dp[i] = 1;

3、初始化

dp[0] = 1就可以

4、遍历顺序

从前往后。

③、代码实现

int findLengthOfLCIS(vector<int>& nums) {
        int dp[10010] = {1};
        int n = nums.size();
        int res = 1;
        for(int i = 1; i < n; i++){
            if(nums[i] > nums[i - 1]) dp[i] = dp[i - 1] + 1;
            else dp[i] = 1;
            res = max(res, dp[i]);
        }
        return res;
    }

3、最长重复子数组

①、题目描述

②、解题思路

题目链接:最长重复子数组

1、确定dp数组含义

dp[i][j]表示第一个数组以 i 结尾,第二个数组以 j 结尾的时候,两个数组中的重复子数组的个数。

2、递推公式

if(nums1[i - 1] == nums2[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                res = max(res, dp[i][j]);

3、初始化

全部初始成0

4、遍历顺序

外层第一个数组,内层第二个数组。

③、代码实现

int findLength(vector<int>& nums1, vector<int>& nums2) {
        int dp[1010][1010] = {0};
        int n = nums1.size(); int m = nums2.size();
        int res = 0;
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <=m; j++){
                if(nums1[i - 1] == nums2[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                res = max(res, dp[i][j]);
            }
        }
        return res;
    }

4、最长公共子序列

①、题目描述

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

  • 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。

两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

示例 1:

输入:text1 = "abcde", text2 = "ace" 
输出:3  
解释:最长公共子序列是 "ace" ,它的长度为 3 。

②、解题思路

题目链接:最长公共子序列

1、确定dp数组含义

dp[ i ][ j ]是表示第一个数组i下标结尾,第二个数组j下标结尾的时候,dp[i][j]表示两个的最大公共子序列长度。

2、递推公式

if(text1[i - 1] == text2[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                else {
                    dp[i][j] = max(max(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]);
                }

3、初始化

全部初始化成0。

4、遍历顺序

从上到下,从左到右。

③、代码实现

int longestCommonSubsequence(string text1, string text2) {
        int dp[1010][1010] = {0};
        int n = text1.size(); int m = text2.size();
        for(int i = 1; i<=n; i++){
            for(int j = 1; j<=m; j++){
                if(text1[i - 1] == text2[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                else {
                    dp[i][j] = max(max(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]);
                }
            }
        }
        return dp[n][m];
    }

5、不相交的线

①、题目描述

在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。

现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:

  •  nums1[i] == nums2[j]
  • 且绘制的直线不与任何其他连线(非水平线)相交。

请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。

以这种方法绘制线条,并返回可以绘制的最大连线数。

示例 1:

输入:nums1 = [1,4,2], nums2 = [1,2,4]
输出:2
解释:可以画出两条不交叉的线,如上图所示。 
但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。

②、解题思路

题目链接:不相交的线

本题其实就是让我们找到两个数组之间相同顺序的子数组序列,并计算其个数。

1、确定dp数组含义

dp[ i ][ j ] 表示第一个数组第i个位置和第二个数组第j个位置的相同子串的个数。

2、递推公式

if(nums1[i - 1] == nums2[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;
                else dp[i][j] = max(max(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]);

3、初始化

全部初始成0。

4、遍历顺序

先第一个数组,然后第二个数组。

③、代码实现

int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        int n = nums1.size(); int m = nums2.size();
        int dp[510][510] = {0};
        for(int i = 1; i<=n; i++){
            for(int j = 1; j<=m; j++){
                if(nums1[i - 1] == nums2[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;
                else dp[i][j] = max(max(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]);
            }
        }

        return dp[n][m];
    }

6、最大子序和

①、题目描述

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

②、解题思路

题目链接:最大子数组和

1、确定dp数组含义

dp数组表示当前位置为末尾的话,最长连续数组和最大时多少。

2、递推公式

 dp[i] = max(dp[i - 1] + nums[i], nums[i]);

3、初始化

dp[0] = nums[0]。

4、遍历顺序

从前往后遍历。

③、代码实现

int maxSubArray(vector<int>& nums) {
        int dp[100010] = {0};
        int n = nums.size();
        dp[0] = nums[0];
        int res = nums[0];
        for(int i = 1; i < n; i++){
           dp[i] = max(dp[i - 1] + nums[i], nums[i]);
           res = max(res, dp[i]);
        }
        return res;
    }

7、判断子序列

①、题目描述

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace""abcde"的一个子序列,而"aec"不是)。

进阶:

如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

致谢:

特别感谢 @pbrother 添加此问题并且创建所有测试用例。

示例 1:

输入:s = "abc", t = "ahbgdc"
输出:true

②、解题思路

题目链接:判断子序列

1、确定dp数组含义

dp[i][j]表示当前第一个数组i下标和第二个数组j下标相同的子数组个数。

2、递推公式

if(s[i - 1] == t[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                else {
                    dp[i][j] = max(max(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]);
                }

3、初始化

全部初始成0。

4、遍历顺序

从小的数组开始遍历,外层小的,内层大的。

③、代码实现

int dp[110][10010];
    bool isSubsequence(string s, string t) {
        if(s.size() == 0) return true;
        int n = s.size(); int m = t.size();
        for(int i = 1; i<=n; i++){
            for(int j = 1; j<=m; j++){
                if(s[i - 1] == t[j - 1]){
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                else {
                    dp[i][j] = max(max(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]);
                }
            }
        }
        return dp[n][m] == n;
    }

二、编辑距离问题 

1、不同的子序列

①、题目描述

给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 109 + 7 取模。

示例 1:

输入:s = "rabbbit", t = "rabbit"
输出3
解释:
如下所示, 有 3 种可以从 s 中得到 "rabbit" 的方案rabbbit
rabbbit
rabbbit

②、解题思路

题目链接:不同子序列

1、确定dp数组含义

dp[i][j]表示两个数组分别以i结尾和以j结尾的时候,相同的第二个数组在一中有几个字串。

2、递推公式

if(s[i - 1] == t[j - 1]){
                    dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % N;
                }
                else dp[i][j] = dp[i - 1][j];

3、初始化

for(int i = 0; i<=n; i++) dp[i][0] = 1;

将最左边一列初始成1,最上面初始成0.这因为不相等是从上面推出来的, 左面是相加的,相加肯定得有值,不然就都是0了,上面是不相等的时候继承,因此可以是0。

4、遍历顺序

从上到下,从左到右,大的字符串在外层,小的字符串在内层。

③、代码实现

typedef long long LL;
LL N = 1e9 + 7;
    int numDistinct(string s, string t) {
        int n = s.size(); int m = t.size();
        int dp[1010][1010] = {0};
        for(int i = 0; i<=n; i++) dp[i][0] = 1;
        for(int i = 1; i<=n; i++){
            for(int j = 1; j<=m; j++){
                if(s[i - 1] == t[j - 1]){
                    dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % N;
                }
                else dp[i][j] = dp[i - 1][j];
            }
        }
        return dp[n][m];
    }

2、两个字符串删除操作

①、题目描述

给定两个单词 word1 和 word2 ,返回使得 word1 和  word2 相同所需的最小步数

每步 可以删除任意一个字符串中的一个字符。

示例 1:

输入: word1 = "sea", word2 = "eat"
输出: 2
解释: 第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea"

②、解题思路

题目链接:两个字符串删除操作

1、确定dp数组含义

dp[i][j]表示分别以i和j相同结尾的两个字符串想完全相同需要进行的删除操作数。

2、递推公式

 if(word1[i - 1] == word2[j - 1]) dp[i][j] = dp[i - 1][j - 1];
                else {
                    dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);
                }

3、初始化

dp[i][0]每个下标初始成i。

dp[0][j]每个下标初始成j。

4、遍历顺序

两个数组分两层遍历。左到右,上到下遍历。

③、代码实现

int minDistance(string word1, string word2) {
        int n = word1.size(); int m = word2.size();
        int dp[510][510] = {0};
        for(int i = 1; i<=n; i++) dp[i][0] = i;
        for(int j = 1; j<=m; j++) dp[0][j] = j;
        for(int i = 1; i<=n; i++){
            for(int j = 1; j<=m; j++){
                if(word1[i - 1] == word2[j - 1]) dp[i][j] = dp[i - 1][j - 1];
                else {
                    dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);
                }
            }
        }
        return dp[n][m];
    }

3、最短编辑距离

①、题目描述

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

示例 1:

输入:word1 = "horse", word2 = "ros"
输出:3
解释:
horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r')
rose -> ros (删除 'e')

②、解题思路

题目链接:编辑距离

1、确定dp数组含义

dp[i][j]表示w1i下标和w2下标数组完全相同的话需要的修改次数。

2、递推公式

if(word1[i - 1] == word2[j - 1]) dp[i][j] = dp[i - 1][j - 1];
                else {
                    dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + 1;

3、初始化

for(int i = 0; i<=n; i++) dp[i][0] = i;
        for(int j = 0; j<=m; j++) dp[0][j] = j;

4、遍历顺序

从上到下,从左到右。

③、代码实现

int minDistance(string word1, string word2) {
        int n = word1.size(); int m = word2.size();
        for(int i = 0; i<=n; i++) dp[i][0] = i;
        for(int j = 0; j<=m; j++) dp[0][j] = j;
        for(int i = 1; i <= n; i++){
            for(int j = 1; j<=m; j++){
                if(word1[i - 1] == word2[j - 1]) dp[i][j] = dp[i - 1][j - 1];
                else {
                    dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + 1;
                }
            }
        }
        return dp[n][m];
    }

4、编辑距离

①、题目描述

 给定 n 个长度不超过 1010 的字符串以及 m 次询问,每次询问给出一个字符串和一个操作次数上限。

对于每次询问,请你求出给定的 n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。

每个对字符串进行的单个字符的插入、删除或替换算作一次操作。

输入格式

第一行包含两个整数 n 和 m。

接下来 n 行,每行包含一个字符串,表示给定的字符串。

再接下来 m 行,每行包含一个字符串和一个整数,表示一次询问。

字符串中只包含小写字母,且长度均不超过 1010。

输出格式

输出共 m 行,每行输出一个整数作为结果,表示一次询问中满足条件的字符串个数。

数据范围

1≤n,m≤10001≤

输入样例:
3 2
abc
acd
bcd
ab 1
acbd 2
输出样例:
1
3

②、解题思路

题目链接:编辑距离

1、确定dp数组含义

dp[i][j]表示w1i下标和w2下标数组完全相同的话需要的最少修改次数。

2、递推公式

if(a[i - 1] == b[j - 1])dp[i][j] = dp[i - 1][j - 1];
                else {
                    dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + 1;

3、初始化

for(int i = 1; i <= a.size(); i++) dp[i][0] = i;
        for(int i = 1; i <= b.size(); i++) dp[0][i] = i;

4、遍历顺序

从左到右,从上到下。

③、代码实现

#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include<algorithm>
int n, m;
vector<string> strs;
const int N = 1010;
int dp[N][N];

int get_num(string a, int n)
{
    int res = 0;
    for(int k = 0; k < strs.size(); k++)
    {
        string b = strs[k];
        for(int i = 1; i <= a.size(); i++) dp[i][0] = i;
        for(int i = 1; i <= b.size(); i++) dp[0][i] = i;
        
        for(int i = 1; i<=a.size(); i++) {
            for(int j = 1;j <= b.size(); j++){
                if(a[i - 1] == b[j - 1])dp[i][j] = dp[i - 1][j - 1];
                else {
                    dp[i][j] = min({dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]}) + 1;
                }
            }
        }
        if(dp[a.size()][b.size()] <= n) res ++;
    }
    return res;
}

int main()
{
    cin>>n>>m;
    while(n -- ){
        string a; cin>>a;
        strs.push_back(a);
    }
    
    while(m -- )
    {
        string s; int n;
        cin>>s>>n;
        cout<<get_num(s, n)<<endl;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/364156.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 整合 Redis 使用教程

作为开发者&#xff0c;相信大家都知道 Redis 的重要性。Redis 是使用 C 语言开发的一个高性能键值对数据库&#xff0c;是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。 Redis 以超…

openharmony开发版应用安装签名

配置签名信息 应用/服务在真机设备上运行&#xff0c;需要提前为应用/服务进行签名&#xff0c;DevEco Studio为开发者提供了自动化签名方案&#xff0c;可以一键完成应用/服务签名。具体操作如下&#xff1a; 单击File > Project Structure > Project > Signing Con…

Pandas进阶--map映射,分组聚合和透视pivot_table详解

文章目录 1.Pandas的map映射&#xff08;1&#xff09;映射&#xff08;2&#xff09;map充当运算工具 2.数据分组和透视&#xff08;1&#xff09;分组统计 - groupby功能 是pandas最重要的功能&#xff08;2&#xff09;聚合agg 3.透视表pivot_table&#xff08;1&#xff09…

【大厂AI课学习笔记】1.3 人工智能产业发展(4)——泛在的人工智能

人工智能走向泛在。 泛在&#xff0c;就是广泛存在。&#xff08;下图来自腾讯AI课。&#xff09; 没办法&#xff0c;被百度抛弃了&#xff0c;想学习&#xff0c;课程打不开&#xff0c;只好投想腾讯的怀抱。 之前考过腾讯云的认证&#xff0c;课程做的还是条理很清晰。 主…

铁轨语义分割(Unet结合resnet系列)

数据介绍 一类是图片&#xff0c;一类是图像标签。 引入库&#xff0c;处理数据 import torch.nn as nn import torch import torch.nn.functional as F import os from PIL import Image import torch from torch.utils.data import Dataset import torchvision.transfor…

QEMU源码全解析 —— 内存虚拟化(1)

接前一篇文章&#xff1a; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 内存虚拟化硬件基础——EPT 特此致谢&#xff01; 内存虚拟化简介 内存是计算机必不可少的组成…

C languange DGEQRF 示例,link liblapack.a

1.示例源码 #include <stdio.h>int min(int m, int n){ return m<n? m:n;}void print_matrix(double* A, int m, int n, int lda) {for (int i 0; i < m; i){for (int j 0; j < n; j){//printf("%7.4f ", A[i j*lda]);printf("%7.4f, &quo…

【数据结构】分治策略

现场保护和现场恢复 文章目录 分治策略分治法解决问题有以下四个特征&#xff1a;分治法步骤: 递归&#xff1a;解决以下问题&#xff1a;倒序输出整数求最大公约数&#xff08;递归和非递归&#xff09;菲波那切数列 不要尝试间接 要使用直接递归&#xff08;自己调用自己&am…

创建与删除数据库(四)

创建与删除数据库&#xff08;四&#xff09; 一、创建数据库 1.1 使用DDL语句创建数据库 CREATE DATABASE 数据库名 DEFAULT CHARACTER 示例&#xff1a; 创建一个test 的数据库&#xff0c;并查看该数据库&#xff0c;以及该数据库的编码。 创建数据库&#xff1a; cre…

MATLAB Fundamentals>>>Centering and Scaling

MATLAB Fundamentals>Common Data Analysis Techniques>Polynomial Fitting>Centering and Scaling 数据导入 This code sets up the activity. yr 2000:2007 penguins [5.49 7.03 7.73 7.70 9.29 9.21 11.89 10.85] 附加练习 How does the model look?…

嵌入式——数字/模拟转换模块(DAC)

目录 一、初识DAC 1. 介绍 2. DAC主要特性 3. DAC的特性参数 二、相关寄存器 1. 控制寄存器&#xff08;DAC_CR&#xff09; 2. DAC通道1 的12位右对齐数据保持寄存器&#xff08;DAC_DHR12R1&#xff09; 3. 通道1数据输出寄存器&#xff08;DAC_DOR1&#xff09; 三…

C# .Net Framework Swagger

1.安装 Swagger 在NuGet程序包中安装以下文件 Swashbuckle: Swagger&#xff1a; Swagger.Net: 2.在项目APP_Start 文件夹下面找到 SwaggerNet.cs文件 1.注释掉这两行代码 2.将PreStart方法的内容修改为以下 public static void PreStart() {RouteTable.Routes.MapHttpRoute(…

Message Queue --- RabbitMQ

MessageQueue Intro 什么是MQ为什么使用MQ常见的MQ 什么是MQ MQ全称是Message Queue&#xff0c;消息的队列&#xff0c;因为是队列&#xff0c;所以遵循FIFO 先进先出的原则&#xff0c;它是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff0c;M…

Win搭建PalWorld服务器,幻兽帕鲁开服联机教程,0基础保姆级教程

Windows系统搭建幻兽帕鲁私服&#xff0c;PalWorld开服联机教程&#xff0c;零基础保姆级教程。 最近这游戏挺火&#xff0c;很多人想跟朋友联机&#xff0c;如果有专用服务器&#xff0c;就不需要房主一直开着电脑&#xff0c;稳定性也好得多。 视频教程&#xff1a;https:/…

vue-cli组件的使用

一、前言 ​ 本文介绍 vue-cli组件的使用&#xff0c;基于已经搭建好的基础项目。关于 vue-cli 构建项目的详细流程&#xff0c;可参考博文&#xff1a;使用vue脚手架构建项目 二、使用步骤 1、创建Header.vue组件 在components 目录下创建 Header.vue 编写Header.vue <…

figure方法详解之清除图形内容

figure方法详解之清除图形内容 一 clf():二 clear():三 clear()方法和clf()方法的区别&#xff1a; 前言 Hello 大家好&#xff01;我是甜美的江。 在数据可视化中&#xff0c;Matplotlib 是一个功能强大且广泛使用的库&#xff0c;它提供了各种方法来创建高质量的图形。在 Mat…

SSE长连接( SpringBoot整合SSE(Server-Sent Events)可以实现后端主动向前端推送数据)

Demo代码分享 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.or…

Java编程练习之类的封装2

1.封装一个股票&#xff08;Stock&#xff09;类&#xff0c;大盘名称为上证A股&#xff0c;前一日的收盘点是2844.70点&#xff0c;设置新的当前值如2910.02点&#xff0c;控制台既要显示以上信息&#xff0c;又要显示涨跌幅度以及点数变化的百分比。运行效果如下&#xff1a;…

【2024美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文

【2023美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文 引言 题目将于2024年2月2日6:00发布。我们团队将会在8点前准时更新问题分析&#xff0c;逐步更新数学模型和实现代码&#xff0c;最后发布完整的论文。 更新进展&#xff1a; &#xff08;…

朋友,我在项目挺好的

2024年&#xff0c;是优橙教育成立第7年。过去6年&#xff0c;我们迎来送往&#xff0c;曾与一届届网优人并肩作战。 今天&#xff0c;我们不问所在何处&#xff1f;只想遥问曾在优橙的每一个你 嘿&#xff01;朋友&#xff0c;最近过得怎么样&#xff1f;现在的你和曾经的自…