当前位置: 首页 > news >正文

在动态规划的海洋中遨游(三)

前言:\textcolor{Green}{前言:}前言:

💞 好久没写题,有点生疏了。这也是给大家提一个醒,一定要一直坚持下去,哪怕每天只做一点点。💞

算法类别

  • 一、算法介绍
    • 原理
    • 适用的情况
    • 做题步骤
  • 二、算法实例
    • 1. 打家劫舍(一)
    • 2. 打家劫舍(二)
    • 3. 买卖股票的最好时机(一)
    • 4. 买卖股票的最好时机(二)
  • 总结归纳

一、算法介绍

原理

思想:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。按顺序求解子阶段,前面子问题的解为后面子问题的求解提供信息。

如果某一问题有很多重叠子问题,使用动态规划是最有效的。

动态规划中每一个状态一定是由上一个状态推导出来。

动态规划算法的基本思想:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。动态规划算法将问题的解决方案视为一系列决策的结果。

适用的情况

  1. 最优化原理:如果问题的最优解所包含的子问题的解也是最优的,称该问题具有最优子结构,即满足最优化原理。
  2. 没有后效性:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说:某状态以后的过程不会影响以前的状态,只与当前状态有关。
  3. 有重叠子问题:子问题之间是不独立的,一个子问题在下一个近阶段可能被多次遇到。(这条性质不是动态规划适用的必要条件但是具备这条性质那么动态规划相对于其他算法就具备一定的优势)。

做题步骤

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

二、算法实例

1. 打家劫舍(一)

题目来源:\textcolor{OrangeRed}{题目来源:}题目来源:BM78 打家劫舍(一)
等级:中等\textcolor{OrangeRed}{等级:中等}等级:中等

👉题目描述

你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家;如果偷了第二家,那么就不能偷第一家和第三家。
给定一个整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。

数据范围:数组长度满足 1≤n≤2×1051≤n≤2×10^51n2×105,数组中每个值满足 1≤num[i]≤50001≤num[i]≤50001num[i]5000

示例1

输入:[1,2,3,4]
返回值:6
说明:最优方案是偷第 2,4 个房间   

示例2

输入:[1,3,6]
返回值:7
说明:最优方案是偷第 1,3个房间   

示例3

输入:[2,10,5]
返回值:10
说明:最优方案是偷第 2 个房间  

👉代码编写

最好的办法是通过动态规划来进行。
如果单纯选择奇数家或者偶数家进行偷取,也可能发生问题。例如为了更多的钱可能会连续选择两家不偷。

👉👉方法1

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型一维数组 * @return int整型*/public int rob (int[] nums) {// write code hereint len = nums.length;if (len <= 1) return nums[0];int[] dp = new int[len];dp[0] = nums[0];dp[1] = Math.max(dp[0], nums[1]);for (int i = 2; i < len; ++i) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);}return Math.max(dp[len - 1], dp[len - 2]);}
}

👉👉方法2
(借鉴的方法)

step 1:用dp[i]表示长度为i的数组,最多能偷取到多少钱,只要每次转移状态逐渐累加就可以得到整个数组能偷取的钱。
step 2:(初始状态) 如果数组长度为1,只有一家人,因此dp[1]=nums[0]。
step 3:(状态转移) 每次对于一个人家,我们选择偷他或者不偷他,如果我们选择偷那么前一家必定不能偷,因此累加的上上级的最多收益,同理如果选择不偷他,那我们最多可以累加上一级的收益。因此转移方程为,dp[i]=max(dp[i−1],nums[i−1]+dp[i−2])。这里的i在dp中为数组长度,在nums中为下标。

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型一维数组 * @return int整型*/public int rob (int[] nums) {//dp[i]表示长度为i的数组,最多能偷取多少钱int[] dp = new int[nums.length + 1];dp[1] = nums[0];for(int i = 2; i <= nums.length; i++)//对于每家可以选择不偷或者偷dp[i] = Math.max(dp[i - 1], nums[i - 1] + dp[i - 2]);return dp[nums.length];}
}

👉 注意点

在第一个方法中
这个是对的。

dp[1] = Math.max(dp[0], nums[1]);

这个是错的,通不过倒数第二个案例。

dp[1] = nums[1];

2. 打家劫舍(二)

题目来源:\textcolor{blue}{题目来源: }题目来源: BM79 打家劫舍(二)
等级:\textcolor{OrangeRed}{等级:}等级: 中等

👉题目描述

你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就不能偷第一家和第三家。沿湖的房间组成一个闭合的圆形,即第一个房间和最后一个房间视为相邻。
给定一个长度为n的整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。

数据范围:数组长度满足 1≤n≤2×1051≤n≤2×10^51n2×105 ,数组中每个值满足 1≤nums[i]≤50001≤nums[i]≤50001nums[i]5000

示例1

输入:[1,2,3,4]
返回值:6
说明:最优方案是偷第 2 4 个房间      

示例2

输入:[1,3,6]
返回值:6
说明:由于 13 是相邻的,因此最优方案是偷第 3 个房间 

👉代码编写

和上一题类似。但是本题中主要是有环形,意思就是选择第一家就不能选择最后一家,选择最后一家就不能选择第一家。那么我们就可以分类来讨论。
偷第一家,那么最后一家就不能偷
不偷第一家,那么意思就是dp[1]=0dp[1]=0dp[1]=0,去选择偷最后一家。

👉👉方法1

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型一维数组 * @return int整型*/public int rob (int[] nums) {// write code hereint len = nums.length;if (len <= 1) return nums[0];int[] dp = new int[len + 1];dp[1] = nums[0];for (int i = 2; i < len; ++i) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);}int result = dp[len - 1];Arrays.fill(dp, 0);dp[1] = 0;for (int i = 2; i <= len; ++i) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]);}return Math.max(dp[len], result);}
}

👉 注意点

注意环形,可以分开进行讨论。

3. 买卖股票的最好时机(一)

题目来源:\textcolor{blue}{题目来源: }题目来源: BM80 买卖股票的最好时机(一)
等级:简单\textcolor{OrangeRed}{等级:简单}等级:简单

👉题目描述

假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益
1.你可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天
2.如果不能获取到任何利润,请返回0
3.假设买入卖出均无手续费

数据范围: 0≤n≤1050≤n≤10^50n105 , 0≤val≤1040≤val≤10^40val104

要求:空间复杂度 O(1),时间复杂度 O(n)

示例1

输入:[8,9,2,5,4,7,1]
返回值:5
说明:在第3天(股票价格 = 2)的时候买入,在第6天(股票价格 = 7)的时候卖出,最大利润 = 7-2 = 5 ,不能选择在第2天买入,第3天卖出,这样就亏损7了;同时,你也不能在买入前卖出股票。            

示例2

输入:[2,4,1]
返回值:2

示例3

输入:[3,2,1]
返回值:0

👉代码编写

  1. 状态定义:dp[i][j]:下标为 i 这一天结束的时候,手上持股状态为 j 时,我们持有的现金数。
    j = 0,表示当前不持股; j = 1,表示当前持股。
    dp[i][0]:第 i 天不持股到该天最大收益
    dp[i][1]:第 i 天持股到该天最大收益

  2. 推导状态转移方程:

    • dp[i][0]:当天不持股,有以下两种情况:
      昨天不持股,今天什么都不做;
      昨天持股,今天卖出股票(现金数增加),
      状态转移方程:dp[i][0]=Math.max(dp[i−1][0],dp[i−1][1]+prices[i])dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i])dp[i][0]=Math.max(dp[i1][0],dp[i1][1]+prices[i]);
    • dp[i][1]:当天持股,有以下两种情况:
      昨天持股,今天什么都不做(现金数与昨天一样);
      昨天不持股,今天买入股票(注意:只允许交易一次,因此手上的现金数就是当天的股价的相反数)
      状态转移方程:dp[i][1]=Math.max(dp[i−1][1],−prices[i])dp[i][1] = Math.max(dp[i - 1][1], -prices[i])dp[i][1]=Math.max(dp[i1][1],prices[i]);

👉👉方法1

import java.util.*;public class Solution {/*** * @param prices int整型一维数组 * @return int整型*/public int maxProfit (int[] prices) {// write code hereint n = prices.length;int[][] dp = new int[n][2];// 不持股dp[0][0] = 0;// 持股dp[0][1] = -prices[0];for (int i = 1; i < n; ++i) {// 什么都不做 / 持股卖出股票dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);// 继续持股 / 之前没有持股,买入股票dp[i][1] = Math.max(dp[i - 1][1], -prices[i]);}return dp[n - 1][0];}
}

👉 注意点

虽然是个简单题,但是还是需要思考一下,状态方程和转移方程是如何。

4. 买卖股票的最好时机(二)

题目来源:\textcolor{blue}{题目来源: }题目来源:BM81 买卖股票的最好时机(二)
等级:中等\textcolor{OrangeRed}{等级:中等}等级:中等

👉题目描述

假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益

  1. 你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票
  2. 如果不能获取收益,请返回0
  3. 假设买入卖出均无手续费

数据范围: 1≤n≤1×1051≤n≤1×10^51n1×1051≤prices[i]≤1041≤prices[i]≤10^41prices[i]104

要求:空间复杂度 O(n),时间复杂度 O(n)
进阶:空间复杂度 O(1),时间复杂度 O(n)

示例1

输入:[8,9,2,5,4,7,1]
返回值:7
说明:
在第1天(股票价格=8)买入,第2天(股票价格=9)卖出,获利9-8=1
在第3天(股票价格=2)买入,第4天(股票价格=5)卖出,获利5-2=3
在第5天(股票价格=4)买入,第6天(股票价格=7)卖出,获利7-4=3
总获利1+3+3=7,返回7     

示例2

输入:[5,4,3,2,1]
返回值:0
说明:由于每天股票都在跌,因此不进行任何交易最优。最大收益为0。      

示例3

输入:[1,2,3,4,5]
返回值:4
说明:第一天买进,最后一天卖出最优。中间的当天买进当天卖出不影响最终结果。最大收益为4。              

备注:

总天数不大于200000。保证股票每一天的价格在[1,100]范围内。

👉代码编写

和上一题类似,不过该题不需要控制购买次数。

  1. 状态定义:dp[i][i]:下标为 i 这一天结束的时候,手上持股状态为 j 时,我们持有的现金数。
    j = 0,表示当前不持股; j = 1,表示当前持股。
    dp[i][0]:第 i 天不持股到该天最大收益
    dp[i][1]:第 i 天持股到该天最大收益
  2. 状态转移:
    • dp[i][0]: 当天不持股,表示前面卖了或者没有买。或者当天将股票卖出了。
      状态转移方程dp[i][0]=Math.max(dp[i−1][0],dp[i−1][1]+price[i])dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + price[i])dp[i][0]=Math.max(dp[i1][0],dp[i1][1]+price[i])
    • dp[i][1]:当天持股,表示前面买入的股票还没有卖。或者当天买入了股票。
      状态转移方程dp[i][1]=Math.max(dp[i−1][1],dp[i−1][0]−price[i])dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - price[i])dp[i][1]=Math.max(dp[i1][1],dp[i1][0]price[i])

👉👉方法1

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* 计算最大收益* @param prices int整型一维数组 股票每一天的价格* @return int整型*/public int maxProfit (int[] prices) {// write code hereint n = prices.length;int[][] dp = new int[n][2];dp[0][0] = 0;dp[0][1] = -prices[0];for (int i = 1; i < n; ++i) {dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);}return dp[n - 1][0];}
}

总结归纳

前方仍需努力。关于买卖股票这一个题还有一个困难题型,这里没有提出,有需求的小伙伴可以自行千万解决BM82 买卖股票的最好时机(三)。这一个题和(一)是类似的,但是加入了条件,只能进行两次购买票操作。

相关文章:

在动态规划的海洋中遨游(三)

前言&#xff1a;\textcolor{Green}{前言&#xff1a;}前言&#xff1a; &#x1f49e; 好久没写题&#xff0c;有点生疏了。这也是给大家提一个醒&#xff0c;一定要一直坚持下去&#xff0c;哪怕每天只做一点点。&#x1f49e; 算法类别一、算法介绍原理适用的情况做题步骤二…...

enable_if模板编程实现字节序转换模板

enable_if和SFINAESFINAE是模板的一个特性&#xff0c;也就是替换失败不报错。正常来说&#xff0c;函数匹配的时候按照优先级依次匹配定义的重载函数&#xff0c;最终选择最佳匹配的函数运行。模板也是一样的&#xff0c;但是在替换模板时&#xff0c;即使出现异常错误也不认为…...

【人工智能与深度学习】基于能量的模型

【人工智能与深度学习】基于能量的模型 概述能量基础模型(EBM)方法定义解决方案:基于梯度的推理有潜在变量的能量基础模型推理例子能量基础模型和机率模型的对比自由能(Free Energy)概述 我们现在介绍一个新框架来定义模型。它提供了一个统一和系列性的方式来定义「监督模型」…...

功能测试三年,是应该改变了

前言 测试行业3年多经验&#xff0c;学历大专自考本科&#xff0c;主要测试方向web&#xff0c;PC端&#xff0c;wap站&#xff0c;小程序公众号都测试过&#xff0c;app也测过一些&#xff0c;C端B端都有&#xff0c;除功能外&#xff0c;接口性能也有涉猎&#xff0c;但是不…...

基于STM32的ubuntu交叉编译环境的搭建(arm-gcc 8.2)

常用的STM32的软件开发方法都是基于MDK keil或IAR集成开发环境&#xff0c;但以上两个集成开发环境软件都是需要收费的&#xff0c;且价格较为昂贵。本节介绍一种在ubuntu上安装arm gcc&#xff08;arm-eabi&#xff09;的方式&#xff0c;用于编译STM32的程序。 1.在arm官网下…...

数据结构:二叉树概念篇(算法基础)

目录 一.有向树的图论基础 1.有向树的相关基本概念 有向树的基本定义: 有向树的结点的度&#xff1a; 有向树的度: 有向树的根结点,分枝结点,叶结点: 树的子树: 树结点的层次: 树的高度: 2.一个基本的数学结论 3.有序有向树 二.数据结构中树的顺序存储结构与链式存…...

华为OD机试真题Java实现【字符串变换最小字符串】真题+解题思路+代码(20222

字符串变换最小字符串 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Java)真题目录汇总 ## 输入输出描述: …...

数字化转型的企业会用低代码平台深化重塑什么形态

随着数字化转型的浪潮不断推进&#xff0c;越来越多的企业开始关注如何更好地利用数字技术提高业务效率和创新能力。而低代码平台作为一种能够快速构建和部署应用程序的新型工具&#xff0c;正越来越受到企业的青睐。那么&#xff0c;数字化转型的企业会用低代码平台深化重塑什…...

【华为OD机试模拟题】用 C++ 实现 - 拼接 URL(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...

六千字让你明白什么是数字孪生?

文章目录1. 背景2. 数字孪生基础2.1 概念2.2 价值3. 技术生态3.1 技术体系3.2 核心技术3.2.1 多领域、多尺度融合建模3.2.2 数据驱动与物理模型融合的状态评估3.2.3 数据采集和传输3.2.4 全生命周期数据管理3.2.5 虚拟现实呈现3.2.6 高性能计算3.3 建设3.3.1 重点3.3.1.1 数字孪…...

判断字符串是否是纯数字不包括符号(含符号显示False)isnumeric()和isdigit()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断字符串是否是纯数字 不包括符号&#xff08;含符号显示False&#xff09; isnumeric()和isdigit() [太阳]选择题 对于代码中当s为‘二十六’时isdigit()和isnumeric()输出的结果是? s …...

计算机408考研先导课---C语言难点2

目录 一、字符型数据与字符串型数据的比较 1、字符型数据特点 2、字符串型数据特点 二、字符数组 1、定义 2、输入输出 ①输入 ②输出 3、字符处理函数 ①put函数 ②gets函数 ③strcat函数 ④strcpy函数 ⑤strcmp函数 ⑥strlen函数 ⑦strlwr函数 ⑧strup…...

682. 棒球比赛

题目&#xff1a;你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成&#xff0c;过去几回合的得分可能会影响以后几回合的得分。 比赛开始时&#xff0c;记录是空白的。你会得到一个记录操作的字符串列表 ops&#xff0c;其中 ops[i] 是你需要记录的第 i 项操…...

【《C Primer Plus》读书笔记】第13章:文件输入/输出

【《C Primer Plus》读书笔记】第13章&#xff1a;文件输入/输出13.1 与文件进行通信13.1.1 文件是什么13.1.2 文本模式和二进制模式13.1.3 I/O的级别13.1.4 标准文件13.2 标准I/O13.3 一个简单的文件压缩程序13.4 文件I/O&#xff1a;fprintf()、fscanf()、fgets()和fputs()13…...

Datacom-HCIE考试经验分享

我是誉天Datacom秦同学。作为誉天众多通过Datacom-HCIE考试的学员之一&#xff0c;我感到很荣幸。 首先说说自学的感受吧&#xff1a; 我是从2020年开始接触网络行业的&#xff0c;听单位的前辈说华为的HCIE认证是行业含金量最高的证书&#xff0c;从那时起心里就种下了一个“I…...

第十二章 系统错误消息 - 一般系统错误消息 P - S

文章目录第十二章 系统错误消息 - 一般系统错误消息 P - S第十二章 系统错误消息 - 一般系统错误消息 P - S 错误代码描述<PARAMETER>由用户编写的函数引用或 Do 命令传递给标记行的参数数量超过了为标记行声明的形式参数的数量。<PRIVATE METHOD>已尝试调用一个私…...

【git】Idea中git的使用

配置git 创建git仓库 不同颜色代表的含义 红色——未加入版本控制&#xff1b;绿色——已经加入控制暂未提交&#xff1b;蓝色——加入&#xff0c;已提交&#xff0c;有改动&#xff1b;白色——加入&#xff0c;已提交&#xff0c;无改动&#xff1b;灰色——版本控制已忽略文…...

Centos安装Python、PyCharm

安装Python 1、打开终端(Terminal) 2、输入以下命令更新系统&#xff1a; sudo yum update 3、安装Python&#xff1a; sudo yum install python3 4、安装完成后&#xff0c;可以使用以下命令检查Python版本&#xff1a; python3 --version 安装PyCharm 1、下载PyCharm的安…...

搞百亿补贴,京东不能只“砸钱”

出品 | 何玺 排版 | 叶媛 京东“百亿补贴”真的要来了。 据多家媒体报道&#xff0c;京东“百亿补贴”已于2月23日启动内测。根据此前消息&#xff0c;京东“百亿补贴”频道将于3日晚8点正式上线。 在京东“百亿补贴”频道正式上线之前&#xff0c;我们来聊一聊“刘强东为什…...

automl介绍以及代码实例

使用AutoML来自动构建机器学习模型&#xff0c;可以使用多种不同的Python包&#xff0c;包括AutoGluon、TPOT、Auto-Keras等。AutoGluon可以自动搜索最佳模型&#xff0c;以便满足开发人员的需求&#xff1b;TPOT可以自动调整模型的参数&#xff0c;以获得更好的性能&#xff1…...

kill 与killall

【查询命令所属软件包】 rpm -qf /usr/bin/killall psmisc-22.20-15.el7.x86_64 rpm -qf /usr/bin/kill util-linux-2.23.2-65.el7_9.1.x86_64 【命令参数】 killallkill -e,--exact require exact match for very long names -I,--ignore-case case insensi…...

【加密】开发常见加密类型

相关加密方法具体使用&#xff0c;查阅工具官方&#xff1b; 对称加密&#xff08;单密钥加密&#xff09;&#xff1a;常用于传输数据加密 信息的加密和解密使用相同密钥&#xff1b; 常见对称算法&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;&#x…...

数据结构之基:从根儿上了解数据结构的特性

学好数据结构&#xff0c;就等于成功了一半。 程序是对现实的模拟&#xff0c;现实是由时间和空间组成的&#xff0c;高效的人都是用最少的时间、最少的空间来做最伟大的事&#xff0c;程序亦是如此。我们要选择最合理的算法和最合理的数据结构&#xff0c;来写最好的代码&…...

C++ 枚举详解

C 枚举详解 C 枚举类型详解 枚举类型的定义格式为&#xff1a; enum <类型名> {<枚举常量表>};关键字enum——指明其后的标识符是一个枚举类型的名字枚举常量表——由枚举常量构成。“枚举常量"或称"枚举成员”&#xff0c;是以标识符形式表示的整型量&…...

【vue3】ref , reactive ,toRef ,toRefs 使用和理解

这篇文章是基于理解写的&#xff0c;仅助于理解&#xff0c;如有任何错误之处&#xff0c;感谢指正&#xff01; 文章目录一.ref的使用1. ref的功能主要有两个&#xff1a;2.使用ref注意事项二.reactive的使用三.使用ref 和 reactive 实现双向数据绑定四.toRef 和 toRefs 的使用…...

fastadmin:如何点击按钮弹出存在的指定页面的弹窗

样式&#xff1a;方法一&#xff1a;直接使用超链接进行操作{:url(popup/purchase/itemno)}&#xff1a;表示地址信息btn-dialog&#xff1a;表示弹窗<a href"{:url(popup/purchase/itemno)}" title"跳转第三方" class"btn btn-success btn-dialog…...

【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(三)

storybook插件addons核心插件插件APIargTypes写文档组件注释法MDX生成在线可视化UI文档上一篇&#xff1a; https://blog.csdn.net/tuzi007a/article/details/129194267插件addons 插件用于增强storybook的UI功能。 核心插件 storybook/addon-essentials 它几乎控制了整个s…...

Android源码分析 —— Activity栈管理(基于Android8)

0. 写在前面 本文基于 Android8.0源码&#xff0c;和Android9.0大同小异&#xff0c;但和Android10.0差别非常大&#xff01;新版改用ATM来管理Activity的启动&#xff0c;Activity的生命周期也通过XXXItem来管理。由于我分析的Activity启动流程就是基于Android8/9的&#xff…...

Python实现贝叶斯优化器(Bayes_opt)优化支持向量机分类模型(SVC算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景贝叶斯优化器(BayesianOptimization) 是一种黑盒子优化器&#xff0c;用来寻找最优参数。贝叶斯优化器是基…...

【华为OD机试模拟题】用 C++ 实现 - 分积木(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...