python算法和数据结构刷题[5]:动态规划
动态规划(Dynamic Programming, DP)是一种算法思想,用于解决具有最优子结构的问题。它通过将大问题分解为小问题,并找到这些小问题的最优解,从而得到整个问题的最优解。动态规划与分治法相似,但区别在于动态规划的子问题通常不是相互独立的。
动态规划的核心是解决重复子问题。例如,斐波那
契数列问题,可以通过递归实现,但效率低下,因为会有重复计算。动态规划通过存储已解决的子问题的答案,避免重复计算,从而提高效率。这种方法需要额外的存储空间,是一种空间换时间的策略。
如果一个问题,可以把所有可能的答案穷举出来,并且穷举出来后,发现存在重叠子问题,就可以考虑使用动态规划。
单维动态规划
斐波那契数列
def fibonacci(n):# 如果n小于等于1,直接返回nif n <= 1:return n# 初始化dp数组,用于存储从0到n的斐波那契数dp = [0] * (n + 1)dp[1] = 1 # 斐波那契数列的第二个数是1# 使用动态规划填充dp数组for i in range(2, n + 1):dp[i] = dp[i - 1] + dp[i - 2]# 返回第n个斐波那契数return dp[n]# 测试代码
print(fibonacci(0)) # 输出 0
print(fibonacci(1)) # 输出 1
print(fibonacci(2)) # 输出 1
print(fibonacci(3)) # 输出 2
print(fibonacci(4)) # 输出 3
print(fibonacci(5)) # 输出 5
print(fibonacci(6)) # 输出 8
print(fibonacci(7)) # 输出 13
70. 爬楼梯 - 力扣(LeetCode)
到达第 n
个台阶的方法数等于到达第 n-1
个台阶和第 n-2
个台阶的方法数之和
class Solution:def climbStairs(self, n: int) -> int:f = [0] * (n + 1)f[0] = f[1] = 1for i in range(2, n + 1):f[i] = f[i - 1] + f[i - 2]return f[n]
118. 杨辉三角 - 力扣(LeetCode)
给出一个整数输出杨辉三角
class Solution:def generate(self, numRows: int) -> List[List[int]]:dp = [[0] * i for i in range(1, numRows + 1)]for i in range(numRows):dp[i][0] = 1dp[i][i] = 1res = []for i in range(numRows):for j in range(i):if i != 0 and j != 0:dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]res.append(dp[i])return res
322. 零钱兑换 - 力扣(LeetCode)
背包问题:背包问题通常描述为:给定一组物品,每个物品有一定的价值(value)和重量(weight),需要从中选择一些物品放入一个给定容量的背包中,使得放入背包的物品的总价值最大,同时不超过背包的容量。
完全背包问题
返回构成该金额所需的最少硬币数量。如果该金额无法通过硬币的任何组合来弥补,则返回 。-1
def coinChange(coins, amount):# 创建一个数组,长度为 amount + 1,初始值为 amount + 1dp = [amount + 1] * (amount + 1)# 金额为0时,需要0个硬币dp[0] = 0# 遍历每个金额for a in range(1, amount + 1):# 遍历每种硬币for coin in coins:# 如果当前硬币面额小于等于当前金额if coin <= a:# 更新 dp[a] 为使用当前硬币后的最少硬币数量dp[a] = min(dp[a], dp[a - coin] + 1)# 如果 dp[amount] 还是初始值,则返回 -1,否则返回 dp[amount]return dp[amount] if dp[amount] != amount + 1 else -1# 示例
coins = [1, 2, 5]
amount = 11
print(coinChange(coins, amount)) # 输出应该是 3
279. 完全平方数 - 力扣(LeetCode)
完全背包问题
def numSquares(n):# 创建一个数组来存储每个数字的最小完全平方数个数,初始值为0dp = [0] * (n + 1)#,用于存储每个数字 i 可以表示为完全平方数之和的最小数量。 # 初始化dp数组,每个位置初始为最大值for i in range(1, n + 1):dp[i] = i # 最坏的情况是 i 个 1 的平方# 遍历每个数字,更新其最小完全平方数个数for i in range(1, n + 1):j = 1while j * j <= i:dp[i] = min(dp[i], dp[i - j * j] + 1)j += 1# 返回n的最小完全平方数个数return dp[n]# 示例
print(numSquares(12)) # 输出应为 3
print(numSquares(13)) # 输出应为 2,因为 13 = 4 + 9
198. 打家劫舍 - 力扣(LeetCode)
def rob(nums):if not nums:return 0if len(nums) == 1:return nums[0]dp = [0] * len(nums)dp[0] = nums[0]dp[1] = max(nums[0], nums[1])for i in range(2, len(nums)):dp[i] = max(dp[i-1], dp[i-2] + nums[i])return dp[-1]# 示例
nums = [2, 7, 9, 3, 1]
print(rob(nums)) # 输出应该是 12,因为抢第 0、2、4 间房子(2+9+1)
139. 单词拆分 - 力扣(LeetCode)
def wordBreak(s, wordDict):# 首先创建一个布尔数组 dp,长度为字符串长度加一,初始化所有值为 Falsedp = [False] * (len(s) + 1)# dp[i] 将表示 s 的前 i 个字符是否可以被成功分割dp[0] = True # 空字符串可以被成功分割# 遍历字符串的每一个字符for i in range(1, len(s) + 1):# 对于每一个可能的结束位置 i,检查所有可能的开始位置 jfor j in range(i):# 如果 dp[j] 为 True,且 s[j:i] 在字典中,那么 dp[i] 也为 Trueif dp[j] and s[j:i] in wordDict:dp[i] = Truebreak # 找到一个有效的分割就跳出内层循环# 返回 dp[len(s)],它表示整个字符串是否可以被成功分割return dp[len(s)]# 示例用法
swordDict = ["apple", "pen", "applepen", "pine", "pineapple"]
s = "pineapplepenapple"
print(wordBreak(s, swordDict)) # 应该返回 True
300. 最长递增子序列 - 力扣(LeetCode)
最长递增子序列:可以不连续但是前后相对顺序不变
def lengthOfLIS(nums):if not nums:return 0# 初始化一个数组 dp,长度与输入数组相同,所有元素初始为 1# dp[i] 表示以 nums[i] 结尾的最长递增子序列的长度dp = [1] * len(nums)# 遍历数组,计算每个位置的最长递增子序列长度for i in range(1, len(nums)):for j in range(i):# 如果当前元素 nums[i] 大于之前的元素 nums[j]# 并且以 nums[i] 结尾的子序列长度可以增加if nums[i] > nums[j]:dp[i] = max(dp[i], dp[j] + 1)# 返回 dp 数组中的最大值,即为最长递增子序列的长度return max(dp)# 示例用法
nums = [10, 9, 2, 5, 3, 7, 101, 18]
print(lengthOfLIS(nums)) # 输出应该是 4,因为最长递增子序列是 [2, 3, 7, 101]
重点:如果 nums[i]
大于 nums[j]
,那么我们可以将 nums[i]
添加到以 nums[j]
结尾的递增子序列中,从而形成一个更长的递增子序列。
152. 乘积最大子数组 - 力扣(LeetCode)
最大乘积子数组问题是指在一个整数数组中找到一个连续的子数组(至少包含一个数),使得这个子数组中所有数的乘积是最大的。
tmp = imax;
imax = imin;
imin = tmp;
def maxProduct(nums):# 初始化最大乘积、当前最大乘积和当前最小乘积max_so_far = nums[0]min_so_far = nums[0]result = nums[0]# 遍历数组,从第二个元素开始for i in range(1, len(nums)):# 如果当前元素是负数,那么最大乘积和最小乘积会交换if nums[i] < 0:max_so_far, min_so_far = min_so_far, max_so_far# 更新当前最大乘积和最小乘积max_so_far = max(nums[i], max_so_far * nums[i])min_so_far = min(nums[i], min_so_far * nums[i])# 更新结果为最大乘积result = max(result, max_so_far)return result# 示例
nums = [2, 3, -2, 4]
print(maxProduct(nums)) # 输出: 6
416. 分割等和子集 - 力扣(LeetCode)
给定一个整数数组 ,如果您可以将数组划分为两个子集,使得两个子集中的元素之和相等,则 返回。
01背包问题
def canPartition(nums):total_sum = sum(nums)# 如果总和是奇数,直接返回 Falseif total_sum % 2 != 0:return Falsetarget = total_sum // 2dp = [False] * (target + 1)dp[0] = True # 0 总是可以达成,不选择任何元素即可# 遍历所有物品(数组中的数字)for num in nums:# 这里必须从 target 递减到 num,以防止一个物品被重复使用for j in range(target, num - 1, -1):# 如果 dp[j - num] 是 True,则 dp[j] 也应该是 Truedp[j] = dp[j] or dp[j - num]# dp[target] 表示是否可以从数组中选取一些数字,使得这些数字的总和等于 targetreturn dp[target]# 示例
nums = [1, 5, 11, 5]
print(canPartition(nums)) # 输出: True
32. 最长有效括号 - 力扣(LeetCode)
当前字符是 )
并且前一个字符是 (,
当前字符是 )
并且前一个字符也是 ):
s = "()(())"
def longest_valid_parentheses(s):n = len(s)if n == 0:return 0# dp[i] 表示以 s[i] 结尾的最长有效括号的长度dp = [0] * nmax_len = 0for i in range(1, n):if s[i] == ')':# 如果前一个字符是'(',则可以形成一个有效的括号对if s[i - 1] == '(':dp[i] = (dp[i - 2] if i >= 2 else 0) + 2# 如果前一个字符是')',并且前面的有效括号长度为 dp[i - 1]# 并且 dp[i - 1] 前面的字符是'(',则可以扩展有效括号长度elif i - dp[i - 1] > 0 and s[i - dp[i - 1] - 1] == '(':dp[i] = dp[i - 1] + (dp[i - dp[i - 1] - 2] if i - dp[i - 1] >= 2 else 0) + 2max_len = max(max_len, dp[i])return max_len# 示例
print(longest_valid_parentheses("(()")) # 输出 2
print(longest_valid_parentheses(")()())")) # 输出 4
多维动态规划
62. 不同路径 - 力扣(LeetCode)
与杨辉三角和爬楼梯类似
空间复杂度:2n
class Solution:def uniquePaths(self, m: int, n: int) -> int:pre = [1] * ncur = [1] * nfor i in range(1, m):for j in range(1, n):cur[j] = pre[j] + cur[j-1]pre = cur[:]return pre[-1]
64. 最小路径和 - 力扣(LeetCode)
向下或向右移动从左上角到右下角的最小路径和
到达每个单元格 (i, j) 的最小路径和可以由到达其上方单元格 (i-1, j) 和左方单元格 (i, j-1) 的最小路径和推导出来。
dp[i][j] 表示到达单元格 (i, j) 的最小路径和,到达 (i, j) 的最小路径和等于到达其上方和左方单元格的最小路径和中的较小者,再加上当前单元格的值。
def min_path_sum(grid):if not grid or not grid[0]:return 0m, n = len(grid), len(grid[0])dp = [[0] * n for _ in range(m)]# 初始化左上角dp[0][0] = grid[0][0]# 初始化第一列for i in range(1, m):dp[i][0] = dp[i - 1][0] + grid[i][0]# 初始化第一行for j in range(1, n):dp[0][j] = dp[0][j - 1] + grid[0][j]# 填充dp数组剩余部分for i in range(1, m):for j in range(1, n):# dp[i][j]可以从上方(dp[i-1][j])或左方(dp[i][j-1])到达,# 所以我们取两者的最小值,并加上当前格子的值。dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]# 右下角的格子将包含从左上角到右下角的最小路径和return dp[m - 1][n - 1]
5. 最长回文子串 - 力扣(LeetCode)
记录字符串中每对字符之间是否形成回文子串
def longest_palindromic_substring(s):n = len(s)if n == 0:return ""# 初始化一个二维数组,用于存储子串是否为回文dp = [[False] * n for _ in range(n)]start = 0 # 最长回文子串的起始位置max_length = 1 # 最长回文子串的长度# 所有长度为1的子串都是回文for i in range(n):dp[i][i] = True# 检查长度为2的子串是否为回文for i in range(n - 1):if s[i] == s[i + 1]:dp[i][i + 1] = Truestart = imax_length = 2# 检查长度大于2的子串for length in range(3, n + 1): # 子串长度从3开始递增for i in range(n - length + 1):j = i + length - 1 # 子串的结束位置# 检查子串s[i:j+1]是否为回文if s[i] == s[j] and dp[i + 1][j - 1]:dp[i][j] = Truestart = imax_length = length# 返回最长回文子串return s[start:start + max_length]# 示例使用
s = "babad"
print(longest_palindromic_substring(s)) # 输出可能是"bab"或"aba"
1143. 最长公共子序列 - 力扣(LeetCode)
子序列可以是不连续的;子数组(子字符串)需要是连续的。
def longest_common_subsequence(text1, text2):# 获取两个字符串的长度m, n = len(text1), len(text2)# 初始化一个二维数组 dp,用于存储子问题的解# dp[i][j] 表示 text1 的前 i 个字符和 text2 的前 j 个字符的最长公共子序列的长度dp = [[0] * (n + 1) for _ in range(m + 1)]# 填充 dp 数组for i in range(1, m + 1):for j in range(1, n + 1):# 如果当前字符相同,则最长公共子序列长度加一if text1[i - 1] == text2[j - 1]:dp[i][j] = dp[i - 1][j - 1] + 1else:# 如果当前字符不同,取左上角、上方、左方三个方向的最大值dp[i][j] = max(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1])# dp[m][n] 即为两个字符串的最长公共子序列的长度return dp[m][n]# 测试用例
text1 = "abcde"
text2 = "ace"
# 测试结果
print(longest_common_subsequence(text1, text2))
72. 编辑距离 - 力扣(LeetCode)
定两个字符串 和 ,返回将 word1
转换为 word2
所需的最小步数
def minDistance(word1, word2):# 创建一个矩阵来存储子问题的解dp = [[0 for x in range(len(word2) + 1)] for x in range(len(word1) + 1)]# 初始化矩阵的第一行和第一列for i in range(len(word1) + 1):dp[i][0] = ifor j in range(len(word2) + 1):dp[0][j] = j# 填充dp矩阵for i in range(1, len(word1) + 1):for j in range(1, len(word2) + 1):# 如果当前字符相同,无需编辑,直接使用上一个状态的值if word1[i - 1] == word2[j - 1]:dp[i][j] = dp[i - 1][j - 1]else:# 如果字符不同,取插入、删除、替换三者的最小值加1dp[i][j] = 1 + min(dp[i - 1][j], # 删除dp[i][j - 1], # 插入dp[i - 1][j - 1] # 替换)# dp矩阵的最后一个元素即为编辑距离return dp[len(word1)][len(word2)]# 示例使用
word1 = "horse"
word2 = "ros"
print(minDistance(word1, word2)) # 输出应该是3,因为"horse" -> "ros"需要3步:h -> r, o ->
相关文章:
python算法和数据结构刷题[5]:动态规划
动态规划(Dynamic Programming, DP)是一种算法思想,用于解决具有最优子结构的问题。它通过将大问题分解为小问题,并找到这些小问题的最优解,从而得到整个问题的最优解。动态规划与分治法相似,但区别在于动态…...
【cocos creator】【模拟经营】餐厅经营demo
下载:【cocos creator】模拟经营餐厅经营...
编程AI深度实战:给vim装上AI
系列文章: 编程AI深度实战:私有模型deep seek r1,必会ollama-CSDN博客 编程AI深度实战:自己的AI,必会LangChain-CSDN博客 编程AI深度实战:给vim装上AI-CSDN博客 编程AI深度实战:火的编程AI&…...
信息学奥赛一本通 2088:【22CSPJ普及组】逻辑表达式(expr) | 洛谷 P8815 [CSP-J 2022] 逻辑表达式
【题目链接】 ybt 2088:【22CSPJ普及组】逻辑表达式(expr) 洛谷 P8815 [CSP-J 2022] 逻辑表达式 【题目考点】 1. 表达式树:中缀表达式建树 可以看该问题信息学奥赛一本通 1356:计算(calc) 了解中缀表达式建树过程。 【解题思路】 解法…...
Linux系统管理
文章目录 一、进程与服务二、systemctl基本语法操作 三、系统运行级别Linux进程运行级别查看当前运行级别修改当前运行级别 四、关机重启命令 一、进程与服务 守护进程与服务是一个东西。 二、systemctl 基本语法 systemctl start|stop|restart|status 服务名查看服务的方法…...
CTFSHOW-WEB入门-命令执行71-77
题目:web 71 题目:解题思路:分析可知highlight_file() 函数被禁了,先想办法看看根目录:cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇:(全是?)这种情况我也…...
[MRCTF2020]Ez_bypass1(md5绕过)
[MRCTF2020]Ez_bypass1(md5绕过) 这道题就是要绕过md5强类型比较,但是本身又不相等: md5无法处理数组,如果传入的是数组进行md5加密,会直接放回NULL,两个NuLL相比较会等于true; 所以?id[]1&gg…...
PPT演示设置:插入音频同步切换播放时长计算
PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算四、使用宏设置设置页面切换和音频同步一、 插入音频及音频设置 1.插入音频:点击菜单栏插入-音频-选择PC上的音频(已存在的音频)或者录制音频(现场录制) …...
Modbus Slave RTU 在 AVP28335(兼容德州仪器TMS 320 28335) 上实现含源码及注释。
今天先把题目先给出来, 在近两天会把源码 (含详细注释 )及部署、测试结果给出来, 希望能给大家帮助。(原来这个程序在CSDN中,有小伙伴已经写了一些,但是发现里面埋了很多坑,例如&…...
git-secret 使用教程
以下是一份详细的 git-secret 使用教程,包含常见场景的 Bash 代码示例: 1. 安装 git-secret # Ubuntu/Debian sudo apt-get install git-secret# macOS (Homebrew) brew install git-secret# 其他 Linux (Snap) sudo snap install git-secret# 验证安装…...
防火墙安全策略
目录 一.拓扑及需求 二.需求分析 三.配置详细信息 防火墙: OA server: Web Server: PC1: 编辑PC2: PC3: 配置安全区域: 交换机: 四.需求实现以及测试: 1.…...
蓝桥杯python基础算法(2-2)——基础算法(D)——进制转换*
目录 五、进制转换 十进制转任意进制,任意进制转十进制 例题 P1230 进制转换 作业 P2095 进制转化 作业 P2489 进制 五、进制转换 十进制转任意进制,任意进制转十进制 int_to_char "0123456789ABCDEF" def Ten_to_K(k, x):answer "…...
VSCode源码分析参考资料
VSCode Architecture Analysis - Electron Project Cross-Platform Best Practices 中文版 VSCode 架构分析 - Electron 项目跨平台最佳实践 Sihan Li博客上的vscode源码分析系列:分析了微服务架构、事件体系、资源管理、配置系统等 文召博客上的vscode 源码解析…...
深入理解 Rust 模块中的路径与公开性:绝对路径、相对路径和 `pub` 的应用
1. 路径的两种形式:绝对路径与相对路径 在 Rust 中,路径类似于文件系统中的目录路径,用来告诉编译器去哪里查找某个项。路径主要有两种形式: 绝对路径 绝对路径从 crate 的根开始。对于当前 crate 的代码,绝对路径以关…...
DeepSeek R1 大模型本地部署指南
以下是部署DeepSeek R1大模型的详细Markdown指南,可直接保存为.md文件并分享: # DeepSeek R1 大模型本地部署指南**适用系统**:Windows 10/11 & Linux (Ubuntu 20.04)---## 目录 1. [硬件要求](#硬件要求) 2. [准备工作](#准备工作) 3. […...
从Proxmox VE开始:安装与配置指南
前言 Proxmox Virtual Environment (Proxmox VE) 是一个开源的虚拟化平台,基于Debian Linux,支持KVM虚拟机和LXC容器。它提供了一个强大的Web管理界面,方便用户管理虚拟机、存储、网络等资源。Proxmox VE广泛应用于企业级虚拟化、云计算和开…...
Docker 安装详细教程(适用于CentOS 7 系统)
目录 步骤如下: 1. 卸载旧版 Docker 2. 配置 Docker 的 YUM 仓库 3. 安装 Docker 4. 启动 Docker 并验证安装 5. 配置 Docker 镜像加速 总结 前言 Docker 分为 CE 和 EE 两大版本。CE即社区版(免费,支持周期7个月)…...
前端 | 浅拷贝深拷贝
在前端开发中,我们经常需要复制对象或数组,但不同的复制方式可能会影响数据的完整性和应用的稳定性。本文将深入探讨浅拷贝(Shallow Copy)和深拷贝(Deep Copy)的区别、实现方式及适用场景。 1. 浅拷贝 1.…...
巧用 Cursor+Coze,轻松简化小程序开发
一、为啥要用 Cursor+Coze 简化小程序开发 家人们,如今小程序简直火出圈啦!不管你是电商从业者,还是服务行业的工作者,又或是自媒体运营者,拥有一个小程序,就相当于给业务插上了腾飞的翅膀,能带来更多的流量和机会。但是,小程序开发的过程,那可真是充满了挑战。从最开…...
Spring Boot常用注解深度解析:从入门到精通
今天,这篇文章带你将深入理解Spring Boot中30常用注解,通过代码示例和关系图,帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解: SpringBootApplication Confi…...
解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题
mac安装软件时,如果出现这个问题,其实很简单 首先打开终端,输入下面的命令 sudo xattr -r -d com.apple.quarantine 输入完成后,先不要回车,点击访达--应用程序--找到你无法打开的app图标,拖到终端窗口中…...
爱普生L3153打印机无线连接配置流程
家里使用的是移动宽带中兴路由器,有WPS功能,进入192.168.1.1管理员页面,用户名user,密码在路由器背面(可以登录后修改密码)。在网络-WLAN网络配置-WPS中,点击push button,激活路由器…...
第二十章 存储函数
目录 一、概述 二、语法 三、示例 一、概述 前面章节中,我们详细讲解了MySQL中的存储过程,掌握了存储过程之后,学习存储函数则肥仓简单,存储函数其实是一种特殊的存储过程,也就是有返回值的存储过程。存储函数的参数…...
pytorch实现门控循环单元 (GRU)
人工智能例子汇总:AI常见的算法和例子-CSDN博客 特性GRULSTM计算效率更快,参数更少相对较慢,参数更多结构复杂度只有两个门(更新门和重置门)三个门(输入门、遗忘门、输出门)处理长时依赖一般适…...
unity报错不存在类型或者命名空间
导入资源或者打开项目时,突然发现多了一堆报错,如 Assets\2DGamekit\Utilities\DefaultPlayables\ScreenFader\ScreenFaderBehaviour.cs(5,19): error CS0234: The type or namespace name UI does not exist in the namespace UnityEngine (are you mi…...
Qt展厅播放器/多媒体播放器/中控播放器/帧同步播放器/硬解播放器/监控播放器
一、前言说明 音视频开发除了应用在安防监控、视频网站、各种流媒体app开发之外,还有一个小众的市场,那就是多媒体展厅场景,这个场景目前处于垄断地位的软件是HirenderS3,做的非常早而且非常全面,都是通用的需求&…...
Spring Bean 的生命周期介绍
Spring Bean 的生命周期涉及多个阶段,从实例化到销毁,在开发中我们可以通过各种接口和注解介入这些阶段来定制化自己的功能。以下是详细的生命周期流程: 1. Bean 的实例化(Instantiation) 方式:通过构造函…...
奥卡姆剃刀原理:用简单的力量,解锁复杂的世界
奥卡姆剃刀原理 大名鼎鼎的奥卡姆剃刀原理(Occam’s Razor),其含义很简单,就一句话:“如无必要,勿增实体”。 这句看似简单却蕴含着深刻智慧的话,是由14世纪的英格兰逻辑学家、圣方济各会修士…...
STM32 串口发送与接收
接线图 代码配置 根据上一章发送的代码配置,在GPIO配置的基础上需要再配置PA10引脚做RX接收,引脚模式可以选择浮空输入或者上拉输入,在USART配置串口模式里加上RX模式。 配置中断 //配置中断 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE…...
如何生成强密码:提高网络安全性的全面指南
引言 在数字化时代,密码的安全性至关重要。随着我们在社交媒体、电子邮件、在线银行等平台上储存越来越多的个人信息,强密码的使用变得更加关键。强密码能有效防止暴力破解、字典攻击等安全威胁。因此,在本文中,我们将深入探讨如…...
如何不更新application.yml而更新spring的配置
更改应用程序外部属性的位置 默认情况下,来自不同来源的属性会按定义的顺序添加到 Spring 中(有关确切顺序,请参阅“Spring Boot 功能”部分中的“外部化配置”)。Environment 您还可以提供以下系统属性(或环境变量&…...
【Unity踩坑】Unity项目管理员权限问题(Unity is running as administrator )
问题描述: 使用Unity Hub打开或新建项目时会有下面的提示。 解决方法: 打开“本地安全策略”: 在Windows搜索栏中输入secpol.msc并回车,或者从“运行”对话框(Win R,然后输入secpol.msc)启…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter1-什么是 JavaScript
一、什么是 JavaScript 虽然 JavaScript 和 ECMAScript(发音为“ek-ma-script”) 基本上是同义词,但 JavaScript 远远不限于 ECMA-262 所定义的那样。没错,完整的 JavaScript 实现包含以下几个部分。 核心(ECMAScript&…...
队列 + 宽搜(4题)
目录 1.n叉树的层序遍历 2.二叉树的锯齿形层序遍历 3.二叉树的最大宽度 4.在每个树行中找最大值 1.n叉树的层序遍历 429. N 叉树的层序遍历 - 力扣(LeetCode) 我们只需要把某个节点出队的时候把它的孩子节点添加进来即可。 出队的次数就是最开始队列…...
二、面向对象
一、结构体类型 结构体类型是一种自定义类型,用于创建我们游戏或者实际业务中的自定义类型. 代码中变量有通用的,可以使用结构体,包裹起来。 1、成员变量 /// <summary> /// 英雄结构体 /// </summary> struct Hero {//成员p…...
【DeepSeek背后的技术】系列二:大模型知识蒸馏(Knowledge Distillation)
目录 1 引言2 操作步骤和公式说明2.1 准备教师模型(Teacher Model)和学生模型(Student Model)2.2 生成软标签(Soft Labels)2.3 定义蒸馏损失函数2.4 训练学生模型2.5 调整超参数2.6 评估与部署 3 其他知识蒸…...
PyQt4学习笔记2】QMainWindow
目录 一、创建 QMainWindow 组件 1. 创建工具栏 2. 创建停靠窗口 3. 设置状态栏 4. 设置中央窗口部件 二、QMainWindow 的主要方法 1. addToolBar() 2. addDockWidget() 3. setStatusBar() 4. setCentralWidget() 5. menuBar() 6. saveState() 和 restoreState() 三、QMainWind…...
《海丰县蔡氏简介》前言
《海丰县蔡氏简介》前言 蔡惠进主编 汕尾市海陆丰蔡姓祖先基本是福建人, 在宋朝时迁至海丰, 因受潮汕文化、 客家文化、 广府文化、 政治归属等系列因素影响, 形成了闽南人一 种新的文化, 既有传统的闽南文化, 又有潮汕…...
深入探索Vue 3组合式API
深入探索Vue 3组合式API 深入探索Vue 3组合式API一、组合式API诞生背景1.1 Options API的局限性1.2 设计目标二、核心概念解析2.1 setup() 函数:组合式API的基石2.2 响应式系统:重新定义数据驱动2.3 生命周期:全新的接入方式2.4 响应式原理探…...
获取 ARM Cortex - M 系列处理器中 PRIMASK 寄存器的值
第一种实现(纯汇编形式) __ASM uint32_t __get_PRIMASK(void) {mrs r0, primaskbx lr }代码分析 __ASM 关键字:这通常是特定编译器(如 ARM GCC 等)用于嵌入汇编代码的指示符。它告诉编译器下面的代码是汇编代码。mrs …...
使用deepseek写一个单击,双击和长按的检测函数
DeepSeek好火,注册试用一下,感觉和chatgpt o1差别不大,唯一的问题就是追多几次就崩溃了,再问不下去了。以下是测试结果。 提问: 请使用c语言写一个函数,输入参数是是为: A为当前的输入量&am…...
MySQL面经
1.范式 第一范式:每一列都不能再拆分 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不是主键的一部分 第三范式:在第二范式的基础上,非主键列只依赖于主键列,而不依赖于其他非主键…...
【C++】P1765 手机
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯问题描述题目内容示例: 键盘布局 💯我的做法思路问题与优化我的代码实现分析与问题 💯老师的做法思路老师的代码实现分析优点 …...
MyBatis-Plus速成指南:简化你的数据库操作流程
简介: MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatsi-Plus 提供了通用的 Mapper 和 Service,可以不编写任何 SQL 语句的前提下,快速的实现单表的增…...
DeepSeek超越ChatGPT的能力及部分核心原理
DeepSeek超越ChatGPT的能力及部分核心原理 目录 DeepSeek超越ChatGPT的能力及部分核心原理超越ChatGPT的能力核心原理超越ChatGPT的能力 推理计算能力更强:在复杂的数学计算、法律文件审查等任务中,DeepSeek的推理能力可媲美甚至超越部分国际顶尖AI模型,包括ChatGPT。例如在…...
优选算法的灵动之章:双指针专题(一)
个人主页:手握风云 专栏:算法 目录 一、双指针算法思想 二、算法题精讲 2.1. 查找总价格为目标值的两个商品 2.2. 盛最多水的容器 编辑 2.3. 移动零 2.4. 有效的三角形个数 一、双指针算法思想 双指针算法主要用于处理数组、链表等线性数据结构…...
作业day4
请实现一个终端的功能,注意需要带有cd功能 typedef struct sockaddr_in addr_in_t; typedef struct sockaddr addr_t; typedef struct sockaddr_un addr_un_t; char *mygets(char* s,int size){char* res fgets(s,size,stdin);int len strlen(s);if(s[len-1] \n)…...
python日志处理logging
python日志处理logging 在项目开发中,日志信息是程序中必不可少的组成部分。每一种语言都有相应的日志模块,如java中log4j,而python中是通过logging模块来提供日志功能。 日志要哪些本质功能? 在分享日志logging模块之前&#…...
开发板目录 /usr/lib/fonts/ 中的字体文件 msyh.ttc 的介绍【微软雅黑(Microsoft YaHei)】
本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸扩展。 本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸扩展。 问:运行 ls /usr/lib/fonts/ 发现有一个名叫 msyh.ttc 的字体文件,能介绍…...
浅谈《图解HTTP》
感悟 滑至尾页的那一刻,内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂,但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说,《图解HTTP》适合作为第一本网络协议书。确实,它就像一座桥梁,连接…...