[高质量]2024五一数学建模A题保奖思路+代码(后续会更新)

你的点赞收藏是我继续更新的最大动力,可点击文末卡片获取更多资料

你是否在寻找数学建模比赛的突破点?

作为经验丰富的数学建模团队,我们将为你带来2024 年华东杯(A题)的全面解析包。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,帮助你全面理解并掌握如何解决类似问题。

A题 钢板最优切割路径问题

提高钢板下料切割过程中的工作效率,是模具加工企业降低成本和增加经济效益的重要途径,其中钢板切割的路径规划是钢板切割过程的一个关键环节。

钢板切割就是使用特殊的切割技术,基于给定的下料切割布局图纸对钢板进行加工。切割过程中设计切割路径至关重要,最优切割路径要满足空程最短的原则。

注:(1) 空程是指在切割设备所进行的一系列操作中不产生切割效果的水平运动路径(垂直运动路径不计入空程);(2) 本题默认切割起始点均为右下角点(见各图所示);(3) 本题下料切割布局图中的实线均为切割线。

问题1:给定如图2所示的下料切割布局N1,其中B3-B4为钢板边界线,不用切割,B1为切割起始点。请建立数学模型,设计最优切割路径方案,并给出最优切割路径的空程总长度。

针对钢板切割问题,我们面临的主要挑战是如何规划切割路径,以最小化在不进行切割的情况下切割头的移动距离,即空程。这可以通过将问题抽象为旅行商问题(TSP)来解决,其中切割点作为城市,需要找到访问所有城市(切割点)一次并返回起点的最短路径。

建模要点:

  • 顶点(V):定义为切割线的起点和终点。
  • 边(E):两个顶点之间的直线距离,代表从一个切割点移动到另一个切割点的直线路径。
  • 目标:最小化完成所有必需切割后的总移动距离。

数学模型

设是顶点集合,其中每个顶点代表一个切割点的位置。定义是从顶点到顶点的距离。我们的目标是找到一个排列(代表顶点的访问顺序),使得以下目标函数最小化:设P={p1,p2,...,pn}是顶点集合,其中每个顶点代表一个切割点的位置。定义dij是从顶点pi到顶点pj的距离。我们的目标是找到一个排列π(代表顶点的访问顺序),使得以下目标函数最小化: \text{设} \quad P = \{p_1, p_2, ..., p_n\} \quad \text{是顶点集合,其中每个顶点代表一个切割点的位置。定义} \quad d_{ij} \quad \text{是从顶点} \quad p_i \quad \text{到顶点} \quad p_j \quad \text{的距离。我们的目标是找到一个排列} \quad \pi \quad \text{(代表顶点的访问顺序),使得以下目标函数最小化:}

minimizeZ=dπ(n)π(1)+∑i=1n−1dπ(i)π(i+1) \text{minimize} \quad Z = d_{\pi(n)\pi(1)} + \sum_{i=1}^{n-1} d_{\pi(i)\pi(i+1)}

其中,是顶点到顶点之间的距离。其中,dπ(i)π(i+1)是顶点π(i)到顶点π(i+1)之间的距离。 \text{其中,} \quad d_{\pi(i)\pi(i+1)} \quad \text{是顶点} \quad \pi(i) \quad \text{到顶点} \quad \pi(i+1) \quad \text{之间的距离。}

3. 解决策略

考虑到实际操作的复杂性,我们将采用一种启发式算法来找到一个近似的最优解:

  • 贪心算法:从起始点开始,每次选择最近的未访问顶点作为下一个访问顶点。
  • 改进策略:使用 2-opt 或 3-opt 技术来进行路径优化,这种技术可以通过局部交换来改进初始贪心解。

Python 代码实现

import numpy as np
from scipy.spatial import distance_matrix
from itertools import permutations# 定义顶点坐标
coordinates = {'B1': (0, 0),'B2': (0, 50),'B3': (80, 50),'B4': (0, 80),'A1': (20, 15),'A2': (20, 35),'A3': (60, 35),'A4': (60, 15)
}# 计算距离矩阵
points = list(coordinates.keys())
coords = np.array(list(coordinates.values()))
dist_mat = distance_matrix(coords, coords)# 贪心算法实现
def greedy_tsp(distances, start=0):n = len(distances)visited = [False] * nvisited[start] = Truepath = [start]total_distance = 0current = startwhile len(visited) < n:next_node = Nonemin_distance = float('inf')for i in range(n):if not visited[i] and distances[current, i] < min_distance:next_node = imin_distance = distances[current, i]path.append(next_node)visited[next_node] = Truetotal_distance += min_distancecurrent = next_node# Returning to the starttotal_distance += distances[path[-1], start]path.append(start)return path, total_distance# 调用贪心算法
best_path, min_distance = greedy_tsp(dist_mat)
best_path_labels = [points[i] for i in best_path]# 输出结果
print("最优切割路径:", best_path_labels)
print("最小空程总长度:", min_distance)

问题2:给定下料切割布局N2见图3,构件的外边界切割成上下对称的锯齿状,同时内部切割出四个半径为3的圆形和一个椭圆形。请根据下料切割布局N2的参数信息,建立数学模型,设计最优切割路径方案,并给出最优切割路径的空程总长度。

为了解决钢板的最优切割路径问题,我们将采用组合优化和启发式算法。具体过程如下:

数学建模思路

  1. 模型目标: 最小化空程总长度。这意味着我们需要找到一条路径,使得在不进行实际切割的过程中,切割头移动的距离最短。
  2. 变量定义
  3. 设定切割路径为一系列点的序列,每个点代表切割头的一个位置。
  4. 定义变量 xi, yi 为切割头在第 i 个点的坐标。
  5. 约束条件
  6. 切割路径必须覆盖所有需切割的边界和图形。
  7. 切割路径应避免重复覆盖已切割区域,除非必要。
  8. 数学模型: 采用图论中的最短路径问题。将切割布局视为图的节点,切割路径视为边,边的权重是切割头移动的距离。

公式

minimize∑i=1n−1(xi+1−xi)2+(yi+1−yi)2 \text{minimize} \sum_{i=1}^{n-1} \sqrt{(x_{i+1} - x_i)^2 + (y_{i+1} - y_i)^2}

这是一个经典的旅行商问题(TSP),我们需要在满足切割要求的前提下,找到一条遍历所有必需点的最短路径。

可以使用的算法

  1. 遗传算法(Genetic Algorithm, GA)
  2. 初始化:随机生成一定数量的可能路径(种群)。
  3. 评估:计算每条路径的空程长度(适应度函数)。
  4. 选择:根据路径的适应度选择较好的路径进行繁殖。
  5. 交叉和变异:通过交叉和变异操作产生新的路径(后代)。
  6. 迭代:重复选择、交叉和变异过程,直至达到一定的迭代次数或适应度满足最优条件。
  7. 模拟退火算法(Simulated Annealing, SA)
  8. 初始化:随机生成一个可能的路径。
  9. 迭代过程:在每次迭代中,通过小的随机扰动生成一个新路径。
  10. 接受准则:如果新路径的适应度更好,则接受新路径;如果更差,以一定的概率接受新路径,概率随温度参数逐渐降低。

代码示例(Python使用遗传算法)

import numpy as np
import matplotlib.pyplot as plt
import randomdef generate_initial_population(size, num_points):return [random.sample(range(num_points), num_points) for _ in range(size)]def calculate_distance(points, route):return sum(np.linalg.norm(points[route[i]] - points[route[i - 1]]) for i in range(len(route)))def crossover(parent1, parent2):size = len(parent1)idx1, idx2 = sorted(random.sample(range(size), 2))offspring = [None]*sizeoffspring[idx1:idx2] = parent1[idx1:idx2]for x in parent2:if not x in offspring:idx = offspring.index(None)offspring[idx] = xreturn offspringdef mutate(route, mutation_rate):for i in range(len(route)):if random.random() < mutation_rate:j = random.randint(0, len(route) - 1)route[i], route[j] = route[j], route[i]def genetic_algorithm(points, population_size, generations, mutation_rate):population = generate_initial_population(population_size, len(points))for _ in range(generations):population = sorted(population, key=lambda x: calculate_distance(points, x))new_population =[crossover(population[i], population[(i + 1) % len(population)]) for i in range(len(population))]population = [mutate(ind, mutation_rate) for ind in new_population]return population[0]# 假设点集
points = np.array([(np.random.uniform(0, 100), np.random.uniform(0, 100)) for _ in range(10)])
route = genetic_algorithm(points, 50, 100, 0.01)# 可视化
plt.figure()
plt.plot(points[:, 0], points[:, 1], 'o')
for i in range(1, len(route)):plt.plot([points[route[i - 1], 0], points[route[i], 0]], [points[route[i - 1], 1], points[route[i], 1]], 'k-')
plt.show()

该模型和算法能有效减少空程长度,提高生产效率。和小天数模一起交流,通过进一步的参数调优和算法改进,可以适应更复杂的实际应用需求。

问题3:给定下料切割布局N3见图4。N3与N2相比,需要在椭圆中多切割出12个矩形件(它们在椭圆中的位置是对称分布的,左右相邻的两个矩形件的中心距离为6,上下相邻的两个矩形件的中心距离为5)。请建立数学模型,设计最优切割路径方案,并给出最优切割路径的空程总长度(要求椭圆内部的所有矩形件要先于椭圆切割)。

在解决给定的钢板切割布局N3的问题中,我们面对的主要挑战是如何有效地组织和优化切割路径,以最小化非生产性的空程距离,并确保特定的切割顺序。这个布局不仅包括复杂的外部边界(锯齿形),还包括多个内部几何形状(圆形和一个包含多个矩形的椭圆形),这些形状需要被优先切割。

在处理您提供的钢板切割布局N3问题中,我们面临的核心挑战是如何精确而高效地规划切割路径,以最小化切割过程中的空程(非生产移动)总长度。这个问题涉及复杂的空间布局,包括一个椭圆形中内置的12个矩形和其他几个圆形,所有这些都需要在一个大的钢板上精确切割。这个任务可以通过构建一个数学模型来优化,该模型不仅需要处理空间和路径优化的问题,还要考虑切割顺序的约束。

首先,需要理解布局的具体细节和要求。给定的布局要求在一个包含12个对称排列的矩形的椭圆内部开始切割,之后才能切割椭圆本身,最后是其他的几何形状。这增加了操作的复杂性,因为需要在开始切割外围形状之前,首先完成所有内部形状的切割。

为了解决这个问题,我们可以采用图论中的方法,将每一个切割需求(无论是边界还是内部矩形)视为图中的节点。每两个节点之间的边表示可能的移动路径,边的权重是从一个节点到另一个节点的欧几里得距离。我们的目标是找到一个总权重(即总空程距离)最小的路径,这个路径必须首先包含椭圆内的所有矩形,然后是椭圆本身,最后是外围形状。

目标函数

minimize∑i=1n−1(xi+1−xi)2+(yi+1−yi)2 \text{minimize} \sum_{i=1}^{n-1} \sqrt{(x_{i+1} - x_i)^2 + (y_{i+1} - y_i)^2}

这里,xi, yi 表示切割点在钢板上的坐标,而 n 是切割点的总数。

约束条件

  1. 所有椭圆内部的矩形必须在椭圆被切割之前切割。
  2. 所有形状必须被完整切割,这意味着路径必须覆盖所有必要的切割线。

优化方法

考虑到问题的复杂性和实际应用中的计算限制,我们选择混合优化策略:

  1. 遗传算法:通过模拟自然选择和遗传机制来搜索最优路径。这包括初始化一定数量的随机解(种群),然后通过选择、交叉和变异来迭代改进这些解。
  2. 局部搜索:对遗传算法中得到的较优解进行局部搜索,以进一步减少空程。

Python实现和可视化

对于具有特定顺序要求的切割任务,动态规划可以用来优化切割顺序,特别是在处理有先后切割顺序要求的切割任务时效果显著。

代码示例(Python使用动态规划)

假设我们有切割点的坐标列表,我们需要确定切割顺序以最小化总的空程距离。

import numpy as npdef compute_distance(points):n = len(points)dist_matrix = np.zeros((n, n))for i in range(n):for j in range(n):dist_matrix[i][j] = np.linalg.norm(np.array(points[i]) - np.array(points[j]))return dist_matrixdef dynamic_programming(dist_matrix):n = len(dist_matrix)dp = [[float('inf')] * (1 << n) for _ in range(n)]dp[0][1] = 0  # Start from the first pointfor mask in range(1, 1 << n):for i in range(n):if mask & (1 << i):for j in range(n):if mask & (1 << j) and i != j:new_mask = mask ^ (1 << i)dp[i][mask] = min(dp[i][mask], dp[j][new_mask] + dist_matrix[j][i])return min(dp[i][(1 << n) - 1] for i in range(n))# Define points based on the given diagram (mock coordinates)
points = [(10, 10), (20, 20), (30, 30), (40, 40)]  # Example coordinates of cut points
dist_matrix = compute_distance(points)
min_distance = dynamic_programming(dist_matrix)
print(f"Minimum air travel distance: {min_distance}")

以下Python代码示例展示了如何使用matplotlib库来可视化切割路径,以及如何构建和使用遗传算法的简化版本来优化路径。

import matplotlib.pyplot as plt
import numpy as np# 假设的坐标点,表示切割点
points = np.array([[10, 10], [20, 20], [30, 15], [40, 40], [50, 50], [60, 60], [70, 70], [80, 80]])# 绘制点
plt.scatter(points[:, 0], points[:, 1])# 绘制连接线,模拟切割路径
for i in range(len(points)-1):plt.plot([points[i][0], points[i+1][0]], [points[i][1], points[i+1][1]], 'r-')plt.title('钢板切割路径示意图')
plt.xlabel('X坐标')
plt.ylabel('Y坐标')
plt.grid(True)
plt.show()

问题4:给定下料切割布局N4见图5,需要在椭圆中切割出4个矩形小零件。由于小零件尺寸较小,为防止小零件掉落,两个相邻的小零件之间需要采用“过桥”的方式,使得相邻零件连接成一个大尺寸零件,要求“过桥”与矩形小零件顶点的最短距离至少为1。“过桥”的宽度为2,且在空程计算中不可以忽略“过桥”的宽度。

请根据N4的具体情况,建立数学模型,确定“过桥”的数目和位置,设计最优切割路径方案,给出最优切割路径的空程总长度(要求切割起始点设计在钢板的右下角,N4中的小圆形切割件不考虑过桥问题)。

在面对N4的钢板切割布局时,我们的目标是有效地设计切割路径来最小化空程总长度,同时确保小零件之间通过“过桥”有效连接。这一需求提高了问题的复杂性,因为除了标准的切割路径优化外,我们还需要考虑如何合理布置“过桥”,确保其既能连接相邻零件,又能符合最小距离要求。

分析与建模思路

  1. 布局和需求分析:布局中包括一个椭圆形和四个小矩形,需在椭圆内完成切割,并在相邻的小零件之间设置“过桥”。每个“过桥”的宽度为2,且顶点到零件的最小距离至少为1,这对切割路径和过桥位置的选择提出了特殊要求。
  2. 过桥设计:根据图形和给定的尺寸,需要确定“过桥”位置。这些位置必须能够连接相邻矩形而不侵犯规定的最小距离。具体到N4布局,四个矩形周围的可用空间需要精确计算,以便安排“过桥”位置。
  3. 数学模型建立
  • 目标函数:最小化总空程距离,包括切割所有零件和“过桥”的路径。
  • 变量定义:定义每一个切割点的坐标及其连接路径。
  • 约束条件:确保所有的“过桥”符合宽度和最小距离的要求;所有图形都需要被完整切割。
  1. 目标函数: minimize∑i=1n−1(xi+1−xi)2+(yi+1−yi)2\text{minimize} \sum_{i=1}^{n-1} \sqrt{(x_{i+1} - x_i)^2 + (y_{i+1} - y_i)^2} 其中,x_i, y_i 为切割路径中第i点的坐标。
  2. 约束条件
  • 对于每个“过桥”,距离相邻小零件顶点至少1单位距离。
  • “过桥”宽度恒为2单位。

为了深入解决N4布局的钢板切割问题,并优化“过桥”设计以及最小化空程总长度,我们可以使用一系列的数学公式来形式化问题。以下是具体的公式描述,用于详细计算并优化切割路径和“过桥”布局:

用到的数学公式

  1. 欧氏距离公式(计算切割路径长度): d(pi,pj)=(xj−xi)2+(yj−yi)2 d(p_i, p_j) = \sqrt{(x_j - x_i)^2 + (y_j - y_i)^2}
  2. 目标函数(最小化总空程距离): minimize∑i=1n−1d(pi,pi+1) \text{minimize} \, \sum_{i=1}^{n-1} d(p_i, p_{i+1})
  3. “过桥”距离约束(保证“过桥”与零件的最小距离): for all i∈bridges,min{d(pi,vj)}≥1for each vertex vjof the rectangle \text{for all } i \in \text{bridges}, \, \text{min} \{ d(p_i, v_j) \} \geq 1 \, \text{for each vertex } v_j \, \text{of the rectangle}
  4. “过桥”宽度约束: wb=2 w_b = 2
  5. 路径连续性约束(确保切割路径的连续性): d(pi,pi+1)≤Lmaxfor some large Lmax d(p_i, p_{i+1}) \leq L_{\text{max}} \, \text{for some large } L_{\text{max}}
  6. 小矩形切割点坐标(根据布局定义四个矩形的坐标): (xr1,yr1),(xr2,yr2),(xr3,yr3),(xr4,yr4) (x_{r1}, y_{r1}), (x_{r2}, y_{r2}), (x_{r3}, y_{r3}), (x_{r4}, y_{r4})
  7. 椭圆形区域内切割点坐标(定义椭圆内切割的开始和结束点): (xe1,ye1),(xe2,ye2) (x_{e1}, y_{e1}), (x_{e2}, y_{e2})
  8. 矩形到椭圆的最短距离计算(确保切割顺序,先切矩形后切椭圆): min{d((xr1,yr1),(xe2,ye2)),…,d((xr4,yr4),(xe2,ye2))} \text{min} \{ d((x_{r1}, y_{r1}), (x_{e2}, y_{e2})), \ldots, d((x_{r4}, y_{r4}), (x_{e2}, y_{e2})) \}
  9. 切割起点至第一个切割点的距离(从钢板右下角到第一个切割点的距离): d(pstart,p1)=(x1−xstart)2+(y1−ystart)2 d(p_{\text{start}}, p_1) = \sqrt{(x_1 - x_{\text{start}})^2 + (y_1 - y_{\text{start}})^2}
  10. 整体路径效率评估公式(评估路径的有效性): Efficiency=Total Cutting DistanceTotal Travel Distance \text{Efficiency} = \frac{\text{Total Cutting Distance}}{\text{Total Travel Distance}}
  11. 切割路径总长度(包括切割距离和空程距离的总和): Total Path Length=∑i=1nd(pi,pi+1) \text{Total Path Length} = \sum_{i=1}^{n} d(p_i, p_{i+1})

通过这些公式,我们能够对切割路径进行精确的计算和优化,确保每一步都符合生产效率和安全的要求。这些计算帮助我们理解切割过程中的每一步动作,以及如何合理安排“过桥”,确保切割效率和产品质量。

优化策略与算法选择

图论与网络流

通过将切割问题转化为图论问题,其中每个需要切割的形状和“过桥”作为节点,节点间的距离作为边,使用网络流算法优化切割路径和“过桥”位置的配置。

遗传算法

利用遗传算法的全局搜索能力来优化切割路径,适应性函数根据空程长度来评价路径的优劣,通过选择、交叉和变异来迭代找到最优解。

Python代码示例

假设切割点及“过桥”位置已定义,以下代码展示如何使用matplotlib进行可视化:

import matplotlib.pyplot as plt
import numpy as np# 假设的切割点和过桥
points = np.array([[10, 10], [20, 20], [30, 30], [40, 40], [50, 50]])
bridges = [(np.array([15, 15]), np.array([25, 25]))]  # 假设的过桥位置# 绘制切割点
plt.scatter(points[:, 0], points[:, 1], color='blue', label='切割点')# 绘制过桥
for bridge in bridges:plt.plot([bridge[0][0], bridge[1][0]], [bridge[0][1], bridge[1][1]], 'k--', label='过桥')plt.title('钢板切割与过桥布局图')
plt.xlabel('X 坐标')
plt.ylabel('Y 坐标')
plt.legend()
plt.grid(True)
plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组模拟双链表-java

通过数组来模拟双链表&#xff0c;并执行一些插入和删除的功能。 目录 一、问题描述 二、模拟思路 1.变量解释 2.数组初始化 3.在下标是k的结点后面插入一个结点 4.删除下标为k的结点 5.基本功能解释 三、代码如下 1.代码如下&#xff1a; 2.读入数据&#xff1a; 3…

【海博】雅思考什么?

文章目录 听力 阅读 写作 口语 参考资料 听力 听力考试分为四个部分&#xff0c;每个部分有10道题&#xff0c;每题1分。问题的排列顺序和答案在听力材料中出现的顺序一致。在播放听力材料过程中&#xff0c;考生会获得读题、写下答案以及检查答案的时间。考生应在播放听力…

Memory augment is All You Need for image restoration 论文翻译

目录 一.介绍 二.实际工作 A.图像阴影去除 B.图像去雨 C.存储模块的开发 三.网络结构 A.内存扩充 B.损失函数设计 四.实验 A.与最先进方法的比较 B.MemoryNet消融研究 五.结论 CVPR2023 MemoryNet 记忆增强是图像恢复所需要的一切 论文地址https://arxiv.org/abs/…

代码随想录算法训练营DAY47|C++动态规划Part8|198.打家劫舍、213.打家劫舍II、198.打家劫舍III

文章目录 198.打家劫舍思路CPP代码 213.打家劫舍II解决环的问题思路总结CPP代码 198.打家劫舍III思路递归三部曲——确定参数和返回值递归三部曲——确定终止条件递归三部曲——确定单层遍历的逻辑 打印dp数组CPP代码 198.打家劫舍 力扣题目链接 文章讲解&#xff1a;198.打家劫…

SVN--基本原理与使用(超详细)

目录 一、SVN概述二、SVN服务端软件安装三、SVN服务端配置四、SVN客户端软件安装与使用五、SVN三大指令六、SVN图标集与忽略功能6.1 图标集6.2 忽略功能 七、SVN版本回退八、SVN版本冲突九、SVN配置多仓库与权限控制9.1 配置多仓库9.2 权限控制 十、服务配置与管理十一、模拟真…

Linux 第十七章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

刷机维修进阶教程-----VIVO机型 修复基带 更改参数 实例步骤操作解析

写到前面: 任何参数修改和刷写分区都有风险。严重会导致无基带 无信号等故障。操作前都需要谨慎,养成备份关键数据分区的习惯。以便出现问题可以恢复。不管是修复基带分区还是更改相关参数,在操作前都有可以恢复原分区数据与刷机救砖的能力在操作。今天以vivo机型来做演示。…

bun 换源 国内阿里源 npmmirror 加速下载

Github https://github.com/oven-sh/bun 版本号 bun 1.1.5 windows 安装 bun 如果本机有 nodejs 环境, 可以 npm install -g bun 安装 ( 官方把 exe 已经传到了 npm 仓库, 走的国内 npm 镜像, 下载速度会很快) 没有 nodejs, 可以用 powershell 脚本安装 具体操作 全局 …

力扣刷题 63.不同路径 II

题干 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

Pytorch GPU版本安装

一、背景 记录一下安装Pytorch GPU版本过程。 由于手残&#xff0c;卸载了电脑上的显卡驱动&#xff0c;现在我连显卡类型是啥都不知道了。 总体思路&#xff1a;安装显卡驱动->安装cuda->安装pytorch库 二、安装显卡驱动 2.1 查看本地显卡型号 通过「DirectX 诊断工具…

Leetcode 145:二叉树的后序遍历(迭代法)

给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 思路&#xff1a; 迭代法的思路是&#xff0c;使用栈&#xff0c;一层一层的将树节点遍历入栈。 比如下面这个树&#xff0c;使用迭代法&#xff0c;1&#xff09;第一层&#xff0c;让根节点入栈。2&a…

顺序表??

1.引入&#xff1a;首先需要了解数据结构的作用&#xff1a;是计算机存储、组织数据的方式。就比如之前学的数组&#xff0c;就是一种基础的数据结构。通过数组&#xff0c;就可以去维护很多个同类型的数据&#xff0c;实现增加删除等的功能&#xff0c;这样就可以有效管理这些…

嵌入式学习63-C++

知识零碎&#xff1a; newmalloc friend 友元函数 …

微搭低代码入门01微搭底层能力介绍

目录 1 什么是应用2 有服务器和无服务器3 关系型数据库和文档型数据库4 云存储5 云函数6 静态网站托管总结 日常经常解答初学者的问题&#xff0c;问的最多的就是学习微搭&#xff0c;需要多久&#xff0c;要不要学习代码。有的初学者心比较急躁&#xff0c;总是希望一蹴而就&a…

边循环边删除List中的数据

List边循环&#xff0c;边删除&#xff1b;这种一听感觉就像是会出问题一样&#xff0c;其实只要是删除特定数据&#xff0c;就不会出问题&#xff0c;你如果直接循环删除所有数据&#xff0c;那可能就会出问题了&#xff0c;比如&#xff1a; public static void main(String[…

一些优雅的监控运维技巧

准备工作 安装 sysstat sudo apt install sysstat查看某个进程的cpu情况 pidstst -u -p 256432查看某个进程的RAM情况 pidstst -r -p 256432查看某个进程的IO情况 pidstst -d -p 256432查看某个进程下的线程执行情况 pidstst -t -p 256432查看指定PID的进程对应的可执行文件…

C++协程库封装

操作系统&#xff1a;ubuntu20.04LTS 头文件&#xff1a;<ucontext.h> 什么是协程 协程可以看作轻量级线程&#xff0c;相比于线程&#xff0c;协程的调度完全由用户控制。可以理解为程序员可以暂停执行或恢复执行的函数。将每个线程看作是一个子程序&#xff0c;或者…

OpenCV如何实现背投(58)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV直方图比较(57) 下一篇&#xff1a;OpenCV如何模板匹配(59) 目标 在本教程中&#xff0c;您将学习&#xff1a; 什么是背投以及它为什么有用如何使用 OpenCV 函数 cv::calcBackP…

蓝桥杯国赛填空题(弹珠堆放)

小蓝有 20230610 颗磁力弹珠&#xff0c;他对金字塔形状尤其感兴趣&#xff0c;如下图所示&#xff1a; 高度为 1 的金字塔需要 1 颗弹珠&#xff1b; 高度为 2 的金字塔需要 4 颗弹珠&#xff1b; 高度为 3 的金字塔需要 10 颗弹珠&#xff1b; 高度为 4 的金字塔需…

Python 语音识别系列-实战学习-语音识别特征提取

Python 语音识别系列-实战学习-语音识别特征提取 前言1.预加重、分帧和加窗2.提取特征3.可视化特征4.总结 前言 语音识别特征提取是语音处理中的一个重要环节&#xff0c;其主要任务是将连续的时域语音信号转换为连续的特征向量&#xff0c;以便于后续的语音识别和语音处理任务…