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

2025高频面试算法总结篇【动态规划】

文章目录

  • 直接刷题链接直达
  • 编辑距离
  • 最长回文子串
  • 完全平方数
  • 最长递增子序列
  • 正则表达式匹配
  • 零钱兑换
  • 鸡蛋掉落
  • 单词拆分


直接刷题链接直达

动态规划(Dynamic Programming, DP)是一种通过拆解子问题并利用子问题的最优解来构建整体问题的最优解的方法,通常用于具有重叠子问题最优子结构的优化问题。

  • 最优子结构:一个问题的最优解包含其子问题的最优解。例如,最短路径问题,求从A到B的最短路径,其中A到C和C到B的最短路径也必须是最优的。
  • 重叠子问题:相同的子问题在递归过程中会被多次计算。例如,斐波那契数列 F(n) = F(n-1) + F(n-2),计算 F(n-2) 时也需要计算 F(n-3)

如果问题满足这两个特性,通常可以考虑使用动态规划。

(1)状态的定义是解决动态规划的关键。通常可以通过以下方式思考:

  1. 分析问题,找出“规模较小”的子问题。
  2. 确定状态变量,这些变量应该能唯一标识一个子问题的情况。
    • 一般来说,状态变量的选取往往与问题的输入参数有关。
    • 例如,背包问题中 dp[i][j] 表示前 i 个物品,在总容量为 j 的背包中的最优解。
    • 在最长公共子序列问题中 dp[i][j] 表示 s1 的前 i 个字符和 s2 的前 j 个字符的最长公共子序列长度。

(2)状态转移方程用于描述如何从较小的子问题递推到较大的子问题。常见的方法:

  • 考虑决策过程:在某个状态下,可以有哪些选择?
  • 根据子问题的解构建当前问题的解

例如:

  • 斐波那契数列dp[n] = dp[n-1] + dp[n-2]
  • 0/1 背包问题dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]] + v[i]) (取或者不取当前物品)

(3)初始状态是动态规划表 dp 的起点,通常根据问题的边界条件来确定。例如:

  • 斐波那契数列:dp[0] = 0, dp[1] = 1
  • 背包问题:dp[0][j] = 0(没有物品可选时,价值均为0)

(4)动态规划可以通过**自顶向下(带记忆化的递归)自底向上(迭代)**来实现:

  • 自顶向下:递归 + 记忆化搜索(Memoization),避免重复计算
  • 自底向上:直接从小规模问题开始填表,通常是 O(n)O(n^2)

  • 最佳折扣问题
    • double calculateMinPrice(int [] counts, double [] prices, Map<int[], Double> promotions)
    • counts表示一个要买的商品数量列表(如0011表示第3件和第4件都买一个),prices表示单价,promotions表示折扣表 比如 0011->9 表示第3件和第4件一起打包买打9折,输出一个最低价格
    • 实现类似 动态规划_最小费用购物问题
  • 设计一个模糊匹配算法,给定一个字符串列表和一个字符串,输出列表中最匹配的那个(若都不匹配可输出空串)
    • 类似于 72. 编辑距离,基于字符长度配置好阈值
  • 最长回文子串
    • 5. 最长回文子串
  • 完全平方数
    • 279. 完全平方数
  • 最长递增子序列
    • 300. 最长递增子序列
  • 正则表达式匹配
    • 10. 正则表达式匹配
  • 零钱兑换
    • 322. 零钱兑换
  • 鸡蛋掉落
    • dp[K] [N] = 1 + max(dp[K - 1] [i - 1] + dp[K] [N - i]) + 1 (i~(1,N)) (K蛋N层,最直观的DP,还有其他解法)
    • 887. 鸡蛋掉落
    • Egg Dropping Dynamic Programming (画状态转移表)
  • 单词拆分
    • 139. 单词拆分
    • 140. 单词拆分 II

编辑距离

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

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

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

class Solution {// dp[i][j] : word1[0:i]转换成 word2[0:j] 所使用的最少操作数// dp[i][j] = (s[i] == s[j] && dp[i-1][j-1]) or (Math.min(插删替换))public int minDistance(String word1, String word2) {int m = word1.length(), n = word2.length();int[][] dp = new int[m+1][n+1];// 初始 dp[0][j] = j; dp[i][0] = i;for (int i = 0; i <= m; i++) {dp[i][0] = i;} for (int j = 0; j <= n; j++) {dp[0][j] = j;}//for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (word1.charAt(i-1) == word2.charAt(j-1)) {dp[i][j] = dp[i-1][j-1];}else {dp[i][j] = Math.min(Math.min(dp[i][j-1], dp[i-1][j]),dp[i-1][j-1])+1;}}}return dp[m][n];}
}

最长回文子串

给你一个字符串 s,找到 s 中最长的 回文 子串。

class Solution {// dp[i][j] s[i-j] 是否为回文串public String longestPalindrome(String s) {if (s.length() <= 1) return s;boolean[][] dp = new boolean[s.length()][s.length()];for (int i = 0; i < s.length(); i++) {dp[i][i] = true;}int start = 0, maxlen = 1;for (int len = 2; len <= s.length(); len++) {for (int i = 0; i <= s.length() - len; i++) {int j = i + len - 1;if (len == 2 && s.charAt(i) == s.charAt(j)) {dp[i][j] = true;}else {dp[i][j] = s.charAt(i) == s.charAt(j) && dp[i+1][j-1];}if (dp[i][j] && len > maxlen) {start = i;maxlen = len;}}}return s.substring(start, start+maxlen);}
}

完全平方数

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。

class Solution {// dp[i] = dp[i-完全平方数]+1public int numSquares(int n) {int[] dp = new int[n+1];Arrays.fill(dp, Integer.MAX_VALUE);dp[0] = 0;for (int i = 1; i <= n; i++){for (int j = 1; j*j <= i; j++) {dp[i] = Math.min(dp[i], dp[i-j*j]+1);}}return dp[n];}
}

最长递增子序列

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

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

class Solution {public int lengthOfLIS(int[] nums) {// dp[i] 以i结尾 的 最长严格递增子序列的长度int[] dp = new int[nums.length];Arrays.fill(dp, 1);int max = 1;for (int i = 1; i < nums.length; i++) {for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {dp[i] = Math.max(dp[i], dp[j] + 1);}}max = Math.max(max, dp[i]);}return max;}
}

正则表达式匹配

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。

‘.’ 匹配任意单个字符
‘*’ 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s 的,而不是部分字符串。

class Solution {public boolean isMatch(String s, String p) {int n = s.length();int m = p.length();boolean[][] dp = new boolean[n + 1][m + 1];// 空字符串匹配空模式dp[0][0] = true;// 处理 p[j-1] 是 '*' 的情况 (匹配 0 次)for (int j = 2; j <= m; j++) {if (p.charAt(j - 1) == '*') {dp[0][j] = dp[0][j - 2]; }}// 填充 DP 数组for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (p.charAt(j - 1) == '.' || p.charAt(j - 1) == s.charAt(i - 1)) {dp[i][j] = dp[i - 1][j - 1];} else if (p.charAt(j - 1) == '*') {dp[i][j] = dp[i][j - 2]; // `*` 匹配 0 次if (p.charAt(j - 2) == s.charAt(i - 1) || p.charAt(j - 2) == '.') {dp[i][j] = dp[i][j] || dp[i - 1][j]; // `*` 匹配多次}}}}return dp[n][m];}
}

零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

class Solution {public int coinChange(int[] coins, int amount) {// dp[i] :可以凑成 i 所需的 最少的硬币个数 int[] dp = new int[amount+1];// dp[i] = dp[i-coins] + 1Arrays.fill(dp, amount + 1);dp[0] = 0;Arrays.sort(coins);for (int coin : coins) {if (coin <= amount) {dp[coin] = 1;}else {break;}}for (int i = 1; i <= amount; i++) {for (int coin : coins) {if (coin > i) {break;}dp[i] = Math.min(dp[i], dp[i-coin]+1);}}return dp[amount] >= amount + 1 ? -1:dp[amount];}
}

鸡蛋掉落


单词拆分

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。

注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

class Solution {// dp[i] 表示 s[0:i] 是否可以拆分成 wordDict 里的单词组合。// dp[i]=dp[j] 且 s[j:i] 在 wordDictpublic boolean wordBreak(String s, List<String> wordDict) {boolean[] dp = new boolean[s.length()+1];dp[0] = true;for(int i = 1; i <= s.length(); i++) {for (int j = 0; j <= i; j++) {if (dp[j] && wordDict.contains(s.substring(j, i))) {dp[i] = true;break;}}}return dp[s.length()];}
}

相关文章:

2025高频面试算法总结篇【动态规划】

文章目录 直接刷题链接直达编辑距离最长回文子串完全平方数最长递增子序列正则表达式匹配零钱兑换鸡蛋掉落单词拆分 直接刷题链接直达 动态规划&#xff08;Dynamic Programming, DP&#xff09;是一种通过拆解子问题并利用子问题的最优解来构建整体问题的最优解的方法&#x…...

FPGA_UART

1.UART 概述 &#xff08;通用异步收发传输器&#xff09; 1. 基本定义 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;是一种常见的串行通信协议&#xff0c;用于在设备间通过异步串行通信传输数据。它不依赖独立的时钟信号&#xff0c;而是通过预…...

绿算轻舟系列FPGA加速卡:驱动数字化转型的核心动力

在数字化浪潮席卷全球的今天&#xff0c;算力已成为推动企业创新和行业升级的核心引擎。绿算轻舟系列FPGA加速卡凭借其高性能、低延迟、高能效比的独特优势&#xff0c;正成为各领域智能化转型的“隐形加速器”。它以灵活的硬件架构和强大的并行计算能力&#xff0c;为复杂场景…...

gitee基本使用

git实用手册 git全局设置 git config --global user.name "yourname" git config --global user.email "youremail"推代码时的账号&#xff08;email) 版本回退 git loggit reset –hard <码>git push -f HTTPS步骤(上传) 拉取项目 1、新建一个…...

最短路径介绍

最短路径是图论中的算法&#xff0c;下面将列举几个常见的算法&#xff1a; &#x1f697; 一、单源最短路径&#xff08;一个起点到所有点&#xff09; 1. Dijkstra 算法 适用图&#xff1a;非负权图&#xff08;不能有负权边&#xff09; 思路&#xff1a;贪心 最小堆&am…...

VRRP 基础全解析:从结构到配置

目录 VRRP基本概述 VRRP基本结构 状态机 ​编辑 负载分担 &#xff08;多个VRRP&#xff09; VRRP基本概述 VRRP能够在不改变组网的情况下&#xff0c;将多台路由器虚拟成一个虚拟路由器&#xff0c;通过配置虚拟路由器的IP地址为默认网关&#xff0c;实现网关的备份。协…...

【NIO番外篇】之组件 Buffer

目录 一、Buffer&#xff1a;数据界的“快递小哥”/“临时仓库管理员” &#x1f609;什么是 Buffer&#xff1f;它的作用是什么&#xff1f; 二、Buffer 的“三围”和“书签”&#x1f4cc;&#xff1a;核心属性1. Capacity (容量)&#xff1a;2. Position (位置)&#xff1a;…...

Python基础知识(一、基础语法)

Python基础知识&#xff08;一、基础语法&#xff09; 字面量注释单行注释多行注释 变量数据类型数据类型查看数据类型转换 标识符命名规范不可使用关键字 运算符算数运算符赋值运算符 字符串字符串的定义方式字符串拼接占位拼接数字精度控制快速格式化 数据输入逻辑运算比较运…...

C语言题目自增在前与在后

一、题目引入 谨记真言: i的值最终都会改变 只是表达式的值不同 二、分析题目 if判断语句里面要条件为真执行时 printf语句 i 变量在前 使用i的当前值是1 i的值就是1与1相等 所以&&左边的为真 但是&&存在 必须前后都为真才为真 所以还要看&&后面…...

【口腔粘膜鳞状细胞癌】文献阅读

写在前面 看看文章&#xff0c;看看有没有思路 文献 The regulatory role of cancer stem cell marker gene CXCR4 in the growth and metastasis of gastric cancer IF:6.8 中科院分区:1区 医学WOS分区: Q1 目的&#xff1a;通过 scRNA-seq 结合大量 RNA-seq 揭示癌症干细胞…...

如何撤回刚提交的 commit

如何撤回刚提交的 commit 如果刚刚执行了 git commit 但想撤销这个提交&#xff0c;有几种方法可以实现&#xff0c;具体取决于你想达到的效果&#xff1a; 1. 撤销 commit 但保留更改&#xff08;修改回到暂存区&#xff09; git reset --soft HEAD~1这会撤销最后一次提交提…...

deepin使用autokey添加微信快捷键一键显隐ctrl+alt+w

打开deepin商店&#xff0c;搜索快捷键&#xff0c;找到autokey 快捷键管理&#xff0c;点击安装 点击右键新建文件夹 点击右键新建脚本 打开脚本并添加以下内容 import subprocess import time# ------------------ 配置项 ------------------ WM_CLASS "wechat…...

开源微调混合推理模型:cogito-v1-preview-qwen-32B

一、模型概述 1.1 模型特点 Cogito v1-preview-qwen-32B 是一款基于指令微调的生成式语言模型&#xff08;LLM&#xff09;&#xff0c;具有以下特点&#xff1a; 支持直接回答&#xff08;标准模式&#xff09;和自我反思后再回答&#xff08;推理模式&#xff09;。使用 I…...

【uniapp-兼容性处理】swiper在iOS上偶发出现后几张图片白屏情况

【日期】2025-04-14 【问题】 swiper在iOS上偶发出现后几张图片白屏情况 swiper内部的几个swiper-item垂直排列&#xff0c;各自进行滚动&#xff0c;样式方面兼容性出现问题 【原因】&#xff1a; 原代码&#xff1a;&#xff08;不应在swiper-item添加style属性&#xf…...

go中new和make有什么异同?

相同点&#xff1a;都是给变量分配内存 不同点&#xff1a; 作用类型不同。new通常给int、string、数组类型的变量分配内存&#xff0c;而make通常给slice、map、channel分配内存。返回值类型不同。new返回指向变量的指针&#xff0c;make返回的是变量本身new分配内存空间后&…...

RabbitMQ 深度解析:从基础到高级应用的全面指南

&#x1f430; RabbitMQ 深度解析&#xff1a;从基础到高级应用的全面指南 前言&#x1f4d8; 一、RabbitMQ 简介⚙️ 二、核心特性可靠性 &#x1f512;灵活路由 &#x1f504;高可用性 &#x1f310;多协议支持 &#x1f30d;多语言客户端 &#x1f4bb;插件机制 &#x1f50…...

动手强化学习之马尔可夫决策(机器人篇)

1 马尔可夫决策过程 马尔可夫决策过程&#xff08;Markov Decision Process, MDP&#xff09;是一种数学框架&#xff0c;用于建模智能体&#xff08;agent&#xff09;在随机环境中做决策的问题。它假设环境的状态转换具有马尔可夫性质&#xff0c;即未来的状态只依赖于当前状…...

【RabbitMQ】核心概念和工作流程

文章目录 RabbitMQ 工作流程流程图 Producer 和 ConsumerConnecting 和 ChannelVirtual hostQueueExchangeRabbitMQ 工作流程 RabbitMQ 工作流程 流程图 RabbitMQ 就是一个生产者/消费者模型 Producer 就是生产者、Consumer 就是消费者Broker 是 RabbitMQ 服务器生产者和消费…...

Windows 操作系统 - Windows 10 磁盘管理无法为 C 盘选择扩展卷

Windows 10 磁盘管理无法为 C 盘选择扩展卷 在 Windows 10 的磁盘管理中&#xff0c;无法为 C 盘选择扩展卷&#xff08;选项灰色不可用&#xff09;&#xff0c;主要原因是未分配空间没有紧邻 C 盘的右侧 补充&#xff1a;Windows 10 磁盘管理打开方式 1. 按下快捷键【Win …...

数据结构——双向链表

首先我们要介绍一下链表的分类 链表的分类 链表说明&#xff1a; 虽然有这么多种链表结构&#xff0c;但是我们实际中用的还是两种结构&#xff1a;单链表&#xff08;单向不带头不循环&#xff09;和 双向带头循环链表 。 单链表&#xff08;单向不带头不循环&#xff09;&…...

Git报错remote: Verify fatal: Authentication failed for ***

解决 Git 拉取代码时报错&#xff1a;fatal: Authentication failed 在使用 Git 时&#xff0c;执行如下命令&#xff1a; git pull origin master出现报错&#xff1a; remote: Verify fatal: Authentication failed for ***一、问题原因分析 1. 使用 HTTP 协议访问&#…...

八、自动化函数

1.元素的定位 web自动化测试的操作核心是能够找到页面对应的元素&#xff0c;然后才能对元素进行具体的操作。 常见的元素定位方式非常多&#xff0c;如id,classname,tagname,xpath,cssSelector 常用的主要由cssSelector和xpath 1.1 cssSelector选择器 选择器的功能&#x…...

websoket 学习笔记

目录 基本概念 工作原理 优势 应用场景 HTTP协议与 webSoket协议之间的对比 消息推送场景 1. 轮询&#xff08;Polling&#xff09; 2. 长轮询&#xff08;Long Polling&#xff09; 3. 服务器发送事件&#xff08;Server-Sent Events, SSE&#xff09; 4. WebSocket…...

正版金币捕鱼海洋管家APP源码结构解析与运行环境说明

这是一款基于成熟运营逻辑开发的休闲类互动娱乐游戏《海洋管家》&#xff0c;采用金币流通体系&#xff0c;双端源码完整&#xff0c;结构清晰&#xff0c;适合用于结构学习、本地部署测试或功能参考。 整体玩法围绕捕鱼为主线&#xff0c;并融合了排行榜、VIP、签到、道具商城…...

大语言模型深度思考与交互增强

总则&#xff1a;深度智能交互的全面升级 在主流大语言模型&#xff08;LLM&#xff09;与用户的每一次交互中&#xff0c;模型需于回应或调用工具前&#xff0c;展开深度、自然且无过滤的思考进程。当模型判断思考有助于提升回复质量时&#xff0c;必须即时进行全方位的思考与…...

Vue.js 项目中 vue.config.js 常用配置项解析

Vue.js 项目中 vue.config.js 常用配置项解析 摘要 在 Vue CLI 创建的项目中&#xff0c;vue.config.js 是核心配置文件&#xff0c;用于定制化构建、开发和部署流程。本文详细解析了该文件的常用配置项&#xff0c;包括基础路径、开发服务器、Webpack 配置、CSS 预处理、插件…...

Javascript逗号操作符

这段代码是一个使用了生成器函数&#xff08;Generator Function&#xff09;的无限循环&#xff08;for (;;)&#xff09;&#xff0c;内部通过switch语句控制流程。代码中有很多逗号分隔的语句&#xff0c;这其实是利用了JavaScript的逗号操作符&#xff08;comma operator&a…...

windows系统安装驱动、cuda和cudnn

一、首先在自己的电脑里安装了nvidia的独立显卡 显卡的查找方式&#xff1a; CtrlShiftEsc打开任务管理器&#xff0c;点击性能&#xff0c;点击GPU 0查看显卡型号&#xff0c;如下图所示&#xff1a; 只要电脑中有nvidia的独立显卡&#xff0c;就可以暗转显卡驱动、cuda和cu…...

常见的 14 个 HTTP 状态码详解

文章目录 一、2xx 成功1、200 OK2、204 No Content3、206 Partial Content 二、3xx 重定向1、301 Moved Permanently2、302 Found3、303 See Other注意4、Not Modified5、307 Temporary Redirect 三、4xx 客户端错误1、400 Bad Request2、401 Unauthorized3、403 Forbidden4、4…...

DAY 44 leetcode 28--字符串.实现strStr()

题号28 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 我的解法 双指针&#xff0c;slow定位&…...

Nginx用途以及好处:

反向代理&#xff1a; 1、提高访问速度 2、进行负载均衡&#xff1a;所谓负载均衡&#xff0c;就是把大量的请求按照我们指定的的方式均衡的分配给集群中的每台服务器(不使用nginx前端会固定的访问某一台服务器 加入nginx分配到多台服务器) 3、保证后端的安全 服务器一般部署在…...

打造可控可测的星座网络:IPLOOK低轨通信仿真平台搭建实践

在低轨卫星通信迅猛发展的趋势下&#xff0c;空天地一体化网络正逐步成为新一代信息基础设施的核心组成。作为移动核心网领域的技术引领者&#xff0c;IPLOOK依托在5G核心网、NTN&#xff08;非地面网络&#xff09;和卫星通信仿真方面的技术优势&#xff0c;率先构建了自主可控…...

火车头采集动态加载Ajax数据(无分页瀑布流网站)

为了先填充好数据在上线&#xff0c;在本地搭建了一个网站&#xff0c;并用火车头采集数据填充到里面。 开始很上手&#xff0c;因为找的网站的分类中是有分页的。很快捷的找到页面标识。 但是问题来了&#xff0c;如今很多网站都是采用的Ajax加载数据&#xff0c;根本没有分…...

笔记:代码随想录算法训练营day67:Floyd 算法精讲、A * 算法精讲 (A star算法) 严重超时完结,不过,撒花

学习资料&#xff1a;代码随想录 Floyd 算法精讲 卡码网&#xff1a;97. 小明逛公园 首先明确floyd算法解决的是多源最短路径问题&#xff0c;对边的权的正负值没有要求&#xff0c;而且是动态规划的思想 五部曲&#xff1a; 定义&#xff1a;grid[i][j][k]表示从i出发到j…...

Electron Forge【实战】桌面应用 —— AI聊天(中)

系列教程 Electron Forge【实战】桌面应用 —— AI聊天&#xff08;上&#xff09; 添加本地存储 Dexie.js 用 IndexedDB 实现&#xff0c;Dexie.js 库简化操作 npm i dexie新建文件 src\db.ts import Dexie, { type EntityTable } from "dexie";import { Provide…...

国达陶瓷重磅推出陶瓷罗马柱外墙整装尖端新产品“冠岩臻石”

近日&#xff0c;记者在佛山国达建材有限公司&#xff08;以下简称国达陶瓷&#xff09;董事长杨建平处了解到&#xff0c;该公司重磅推出的“冠岩臻石”新产品&#xff0c;是属于陶瓷罗马柱外墙整装产品中的尖端产品。新产品自面市之后&#xff0c;深受高端用户的青睐与认可。…...

Java 系统设计:如何应对高并发场景?

Java 系统设计&#xff1a;如何应对高并发场景&#xff1f; 在现代互联网应用中&#xff0c;高并发场景已经成为系统设计中不可避免的挑战。无论是电商秒杀、抢票系统&#xff0c;还是实时数据处理平台&#xff0c;高并发场景都对系统的性能、稳定性和扩展性提出了极高的要求。…...

VR 全景多维赋能,众趣科技助力零售业开启购物新时代

说到商铺这个词&#xff0c;最早形成于春秋战国时期&#xff0c;当时还未形成固定位置的商铺&#xff0c;部分有远见的商人会在人流量较大的区域摆设摊位&#xff0c;促进了城市的繁荣‌。‌到了唐宋时期&#xff0c;商铺进一步发展‌&#xff0c;并随着商品经济的发展和城市人…...

五大生产模式(MTS、MTO、ATO、ETO、CTO)的差异

五大生产模式&#xff08;MTS、MTO、ATO、ETO、CTO&#xff09;差异 一、 库存控制二、 订货提前期三、交期与库存分析四、五大生产模式的产品生命周期 一、 库存控制 ETO 模式侧重于原材料库存管理&#xff0c;以应对定制设计所需的物料供应。 MTO 模式重点是原材料库存&…...

clickhosue中json字符串转为表

将json字符串直接通过sql转为表,这里就可以直接把接口来的数据,直接通过clickhouse进行关联查询了。 -- 将json字符串直接通过sql转为表,这里就可以直接把接口来的数据,直接通过clickhouse进行关联查询了。 WITH -- 解析 JSON 数据为字符串json_data AS (SELECT [{"c…...

二叉树的基本功能实现

一.二叉树的结构及实现 1.二叉树的结构 在之前的章节中已经介绍过&#xff0c;二叉树是一种特殊的树&#xff0c;其最大度为2&#xff0c;及最多有左&#xff0c;右两个孩子&#xff0c;结构图如下 在此之前已经讨论过一些特殊的二叉树&#xff0c;这里讨论一般的二叉树 2.…...

VSCode 降低适用版本并且关闭自动更新

VSCode 降低适用版本并且关闭自动更新 相关链接问题描述解决方法下载安装包关闭自动更新 参考链接 相关链接 VSCode 官网 问题描述 无法正常使用vscode-remote插件远程连接Centos7等一些老版本Linux云服务器&#xff08;如Centos7&#xff09; 从2024年1月&#xff0c;vsco…...

OpenHarmony - 小型系统内核(LiteOS-A)(二)

OpenHarmony - 小型系统内核&#xff08;LiteOS-A&#xff09;&#xff08;二&#xff09; 三、基础内核 3.1、中断及异常处理 基本概念 中断是指出现需要时&#xff0c;CPU暂停执行当前程序&#xff0c;转而执行新程序的过程。即在程序运行过程中&#xff0c;出现了一个必须…...

2025第十六届蓝桥杯PythonA组部分题解

试题A&#xff1a;数字求和 题目描述 给定两个整数a和b&#xff0c;输出它们的和。 输入格式&#xff1a;两个整数&#xff0c;空格分隔 输出格式&#xff1a;一个整数 输入输出样例 输入&#xff1a; 5 8输出&#xff1a; 13解题思路 直接使用加法运算符计算两数之和。…...

苍穹外卖day04

Spring Task实现定时处理订单状态 作用&#xff1a;不需要输入提示信号&#xff0c;便可定时自动执行程序 使用步骤 1、启动类上加上注解&#xff08;EnableScheduling&#xff09;开启定时任务调度 2、专门创建一个包来管理执行定时任务的类&#xff0c;该类需要交给IOC容…...

曲线与曲面的绘制

一、学习目标 &#xff08;1&#xff09;掌握常用规则参数曲线与曲面的编程绘制方法。 &#xff08;2&#xff09;掌握自由曲线与曲面的编程绘制方法。 &#xff08;3&#xff09;了解自由曲面的拼接编程方法。 二、学习内容 &#xff08;1&#xff09;编程绘一个规则参数…...

Python Cookbook-6.2 定义常量

任务 你需要定义一些模块级别的变量(比如命名的常量)&#xff0c;而且客户代码无法将其重新绑定。 解决方案 你可以把任何对象当做模块一样安装。将下列代码存为一个模块const.py&#xff0c;并放入你的Python的sys.path 指定的目录中: class _const(object):class ConstEr…...

【信息系统项目管理师】高分论文:论信息系统项目的范围管理(信息化系统综合管理平台)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划范围管理2、收集需求3、定义范围4、创建WBS5、确认范围6、控制范围论文 2017年6月,我作为项目经理参与了 XX市经济和信息化委员会系统综合管理平台建设项目,该项目投资共150万元人民币,建设工期…...

用Webpack 基础配置快速搭建项目开发环境

Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具&#xff0c;但是Webpack有大量的配置项&#xff0c;对新手不太友好&#xff0c;但是我们可以根据webpack-cli的init命令根据项目需求快速生成webpack的配置文件&#xff0c;本文将手把手教你如何用 Webpack 和 npm 快…...

【LLM Agent】SystemMessage 和 HumanMessage

文章目录 SystemMessage 和 HumanMessageSystemMessage&#xff08;系统消息&#xff09;HumanMessage&#xff08;用户消息&#xff09;结合使用高级设置能否将用户消息&#xff08;HumanMessage&#xff09;写在系统消息&#xff08;SystemMessage&#xff09; SystemMessage…...