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

Javascript算法——回溯算法(组合问题)

相关资料来自《代码随想录》,版权归原作者所有,只是学习记录
在这里插入图片描述

回溯

回溯模板

void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}

回溯搜索过程可以概括为一棵"树"

在这里插入图片描述
三数之和 四数之和 也有点类似求满足指定条件的数组

组合问题

组合与排列的区别

排列:排列是指从一组元素中选择若干个元素并考虑顺序,也就是说 [1, 2] 和 [2, 1] 是不同的排列。

组合:组合是指从一组元素中选择若干个元素,但不考虑顺序,因此 [1, 2] 和 [2, 1] 视为相同的组合。

1. 在这里插入图片描述————————————————————————————————在这里插入图片描述

核心:
1.递归,设置回溯函数参数(index),避免重复组合[1,2]与[2,1]
2.剪枝:i<=_n-(_k-path.length)+1,保证还有足够多元素(此题)
3.利用slice方法浅拷贝数组,而不是直接加result.push(path.slice())在这里插入图片描述

/*** @param {number} n* @param {number} k* @return {number[][]}*/
var combine = function(n, k) {let result=[],path=[];let backtracking=(_n,_k,startIndex)=>{//终止条件if(path.length===_k){result.push(path.slice());return;}//循环本层集合元素//剪枝操作:i<=_n-(_k-path.length)+1for(let i=startIndex;i<=_n-(_k-path.length)+1;i++){path.push(i);//递归backtracking(_n,_k,i+1);//回溯操作path.pop();}};backtracking(n,k,1);return result  
};

2
在这里插入图片描述
———————————————————————————————

核心:
1.不重复,与上类似回溯函数设置一个索引参数index
2.数字1-9,想着去生成数组?->遍历就行for(let i=startIndex;i<9;i++),无需额外定义

/*** @param {number} k* @param {number} n* @return {number[][]}*/
var combinationSum3 = function(k, n) {//确定参数和返回值//参数:k为递归树的层数,即数组path.length===k时就收集结果了!//n为收集数组元素和let result=[],path=[];let sum=0;let backtracking=(_k,_n,startIndex)=>{//确定递归终止条件if(path.length===_k){//数组元素之和不为n,直接返回if(sum===_n){//path.slice()!!!浅拷贝//[...path]result.push(path.slice());}return;}for(let i=startIndex;i<9;i++){sum+=i;path.push(i);//递归backtracking(_k,_n,i+1);//回溯sum-=i;path.pop();}}backtracking(k,n,1);return result; 
};

3.
在这里插入图片描述

核心
1.字母映射:用JS中数组就行!let letterMap=["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"];
2.还是利用数组存遍历的元素,返回结果时对结果做处理就行result.push(path.join(""));
3.本问题是对多个集合做组合问题,且每个集合中元素唯一。直接再遍历时处理就行!const v of letterMap[digits[_diIndex]]

/*** @param {string} digits* @return {string[]}*/
var letterCombinations = function(digits) {//直接用for循环,那3个数,4个数嘞?回溯!!!//字母映射:用数组就行呀!!!let letterMap=["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"];//确定回溯参数//还是用数组,好回溯,知识结果最后进行一下处理就行let result=[],path=[];let length=digits.length;if(length===0)return result;//字符串->字符数组(split)if(length===1)return letterMap[digits].split("");let backtracking=(_digits,_length,_diIndex)=>{if(path.length===_length){result.push(path.join(""));return;}//多个集合中进行递归与回溯!//集合->letterMap[digits[_diIndex]]for(const v of letterMap[digits[_diIndex]]){//从一个集合中加入一个字符path.push(v);//递归,索引控制向下一个集合遍历backtracking(_digits,_length,_diIndex+1)//回溯path.pop();}}backtracking(digits,length,0);return result;
};

4.
在这里插入图片描述
————————————————————————————————

核心:
1.集合中元素可以重复使用
2.简枝操作,当sum+item>target时就break!if(sum+item>target)break;
3.可重复: backtracking(i,sum,target);
在这里插入图片描述

/*** @param {number[]} candidates* @param {number} target* @return {number[][]}*/
var combinationSum = function(candidates, target) {//允许相同的,不应该更好,不考虑剪枝的就是直接多层for//参数与返回值candidates.sort((a,b)=>a-b); // 排序let res=[],path=[];let backtracking=(index,sum,target)=>{//终止条件if(sum>target)return;if(sum===target){res.push(path.slice());return;}for(let i=index;i<candidates.length;i++){let item=candidates[i];//剪枝 sum>target,相加大于无需再递归if(sum+item>target)break;sum+=item;path.push(item);//递归,//需考虑 [2,2,3],[2,3,2],[3,2,2]情况backtracking(i,sum,target);//回溯path.pop();sum-=item;}}backtracking(0,0,target);return res;};

5.
在这里插入图片描述
————————————————————————————————

核心:
1.数组中包括相同元素,去重操作
2.去重先序排序 candidates.sort((a,b)=>a-b);
3.去重操作,与三数之和去重操作类似 if(j>i&&candidates[j]===candidates[j-1]){continue; //若当前元素和前一个元素相同 }

/*** @param {number[]} candidates* @param {number} target* @return {number[][]}*/
var combinationSum2 = function(candidates, target) {//核心:数组中包括相同元素,去重操作!三数求和当时也需考虑去重操作//参数和返回值let res=[],path=[],len=candidates.length;//!!!排序,去重时需要candidates.sort((a,b)=>a-b);let backtracking=(sum,i)=>{if(sum===target){res.push(path.slice());return;}for(let j=i;j<len;j++){const n=candidates[j];//!!!去重if(j>i&&candidates[j]===candidates[j-1]){//若当前元素和前一个元素相同//去重continue;}//剪枝if(sum+n>target)break;path.push(n);sum+=n;//递归backtracking(sum,j+1);//回溯path.pop();sum-=n;}}backtracking(0,0);return res;   
};

Further:组合问题概述

组合问题是经典的算法问题,通常涉及从一组元素中选择若干个元素,按照不同的规则生成所有符合条件的组合。根据问题的要求,组合问题可以按照不同的条件和约束进行分类。下面是一些常见的组合问题类型及其简要概述:

1. 组合的基本类型

这些问题通常要求从给定的一组元素中选择若干个元素,且不考虑顺序。

1.1. 组合总和问题(Combination Sum)
  • 描述:给定一个候选数字的集合和一个目标值,找到所有可以组合出目标值的数字组合。每个数字可以被无限次使用。
  • 典型问题
    • 组合总和(combinationSum):找到和为目标值的组合。
    • 组合总和 II(combinationSum2):与 combinationSum 类似,但数组中的元素是唯一的,不能重复选择。
1.2. 组合问题(Combinations)
  • 描述:从 n 个不同的元素中选择 k 个元素,返回所有可能的组合。选择时不考虑顺序。

  • 典型问题

    • n 个元素中选择 k 个元素的组合。
    // 示例:从 [1, 2, 3] 中选择 2 个元素
    combinations([1, 2, 3], 2);  // 结果:[ [1, 2], [1, 3], [2, 3] ]
    
1.3. 子集问题(Subsets)
  • 描述:从一组元素中找出所有的子集(包括空集)。该问题要求列出集合的所有组合,通常包括选择与不选择每个元素的情况。

  • 典型问题

    • 子集问题(subsets):给定一个整数数组,返回所有可能的子集。
    • 子集 II(subsetsWithDup):与 subsets 类似,但允许输入数组有重复元素。
    // 示例:给定 [1, 2, 3],输出所有子集
    subsets([1, 2, 3]);  // 结果:[ [], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3] ]
    

2. 带有额外约束的组合问题

这些问题通常包含额外的约束条件,如目标值、元素数量限制等。

2.1. 组合总和问题 II(Combination Sum II)
  • 描述:类似于组合总和问题(Combination Sum),但是输入数组中有重复元素,且每个数字只能使用一次。
  • 典型问题
    • 组合总和 II(combinationSum2):从一个包含重复数字的数组中,找出所有和为目标值的组合,每个数字只能用一次。
2.2. 组合求和问题(Combination Sum IV)
  • 描述:给定一个整数数组 nums 和目标整数 target,返回能够组合成目标值 target 的组合数。
  • 典型问题
    • 给定数组 nums = [1, 2, 3] 和目标 target = 4,返回能组成 target 的组合数(例如:[1, 1, 1, 1], [1, 3], [2, 2])。
2.3. 组合问题与选择的顺序有关(Permutations)
  • 描述:与组合不同,排列问题不仅考虑元素的选择,还要考虑元素的顺序。
  • 典型问题
    • 排列问题(permutations):从给定的数字中生成所有可能的排列。
    • 带重复元素的排列问题(permuteUnique):如果给定的数组包含重复元素,要求去除重复的排列。

3. 与排列、分配相关的组合问题

这类问题不仅仅关注组合,还涉及到排列或者将组合元素分配到不同的槽或组中。

3.1. 整数划分问题(Integer Partition)
  • 描述:将一个正整数分解为一组和为目标的正整数,可以允许元素重复。
  • 典型问题
    • 给定一个整数 n,将其分解为若干个正整数的和,可以多次使用同一个数字。
3.2. 组合分组问题(Combination Partition)
  • 描述:将一组数字分成若干个组合,每个组合的和为目标值。
  • 典型问题
    • 给定一个数组和目标值,将数组分成若干个子数组,使得每个子数组的和为目标值。
    • 例如,[1, 2, 3, 4],目标和为 5,应该如何划分出和为 5 的组合。

4. 与图相关的组合问题

这类问题涉及图结构,其中节点可以代表元素,边代表元素之间的关系,解空间的搜索通常采用深度优先搜索(DFS)或广度优先搜索(BFS)方法。

4.1. 图的遍历问题(Graph Traversal)
  • 描述:例如,通过图的回溯算法遍历图的节点以找到所有可能的组合。
  • 典型问题
    • 通过图的遍历找出从一个节点到另一个节点的所有路径。
    • 例如,找出所有从节点 A 到节点 B 的路径。

5. 动态规划与回溯结合的组合问题

这类问题结合了动态规划和回溯算法,通常用于处理大规模数据或优化问题。

5.1. 背包问题(Knapsack)
  • 描述:给定一组物品,每个物品有重量和价值,背包有最大承重,求最大价值的组合。
  • 典型问题
    • 01背包:每个物品只能选择一次,求能获得的最大价值。
    • 完全背包:每个物品可以选择多次,求最大价值。
5.2. 分割问题(Partition Problem)
  • 描述:给定一个整数数组,判断是否可以将其分割成两个子集,使得两个子集的和相等。
  • 典型问题
    • 子集和问题:判断给定数组是否可以分成两个和相等的子集。

6. 其他变种组合问题

还有一些组合问题可能带有更为复杂的条件或要求,比如:

6.1. 组合最大化问题
  • 描述:给定一个数组,选择若干个元素,使得它们的和尽量接近某个目标,或者在某些约束条件下求最大值。
6.2. 最大子集和问题
  • 描述:从给定的数组中选出若干个子集,使得它们的和最大,通常会使用动态规划进行优化。

总结:

组合问题的分类方法有很多,通常可以根据是否允许重复选择、是否考虑顺序、是否存在约束条件等多个方面进行划分。常见的组合问题包括:基础的子集与组合问题、带有约束的组合问题(如组合总和、分割问题等)、与排列、分配相关的问题(如背包问题、整数划分问题等)以及需要结合动态规划的复杂组合问题等。在处理这些问题时,回溯算法常常被用于解决那些穷举解空间的问题,而动态规划则适用于那些有子结构且可以优化的问题。

相关文章:

Javascript算法——回溯算法(组合问题)

相关资料来自《代码随想录》&#xff0c;版权归原作者所有&#xff0c;只是学习记录 回溯 回溯模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点…...

【人工智能机器学习基础篇】——深入详解无监督学习之聚类,理解K-Means、层次聚类、数据分组和分类

深入详解无监督学习之聚类&#xff1a;如K-Means、层次聚类&#xff0c;理解数据分组和分类 无监督学习是机器学习中的一个重要分支&#xff0c;旨在从未标注的数据中发现潜在的结构和模式。聚类&#xff08;Clustering&#xff09;作为无监督学习的核心任务之一&#xff0c;广…...

从0到机器视觉工程师(二):封装调用静态库和动态库

目录 静态库 编写静态库 使用静态库 方案一 方案二 动态库 编写动态库 使用动态库 方案一 方案二 方案三 总结 静态库 静态库是在编译时将库的代码合并到最终可执行程序中的库。静态库的优势是在编译时将所有代码包含在程序中&#xff0c;可以使程序独立运行&…...

Mybatis的set标签,动态SQL

set标签常用于update语句中&#xff0c;搭配if标签使用 set标签的作用 1、会动态加上前置set关键字 2、可以删除无关的逗号 示例代码&#xff1a; <update id"update">update employee<set><if test"name ! null">name #{name},<…...

机器学习-感知机-神经网络-激活函数-正反向传播-梯度消失-dropout

文章目录 感知机工作流程 神经网络区别各种各样的神经网络 激活函数激活函数类型Sigmoid 函数ReLU函数Leaky ReLU 函数Tanh 函数 正向传播反向传播梯度消失(gradient vanish)如何解决 Dropout使用 PyTorch实战神经网络算法(手写MNIST数字识别)viewsoftmax和log-softmaxcross-en…...

HTML5 时间选择器详解

HTML5 的时间选择器&#xff08;Time Picker&#xff09;允许用户通过图形界面选择时间。它通过设置 <input> 元素的 type 属性为 time 来实现。以下是关于 HTML5 时间选择器的详细讲解。 HTML5 时间选择器详解 1. 基本用法 要创建一个时间选择器&#xff0c;只需使用…...

SSM-Spring-AOP

目录 1 AOP实现步骤&#xff08;以前打印当前系统的时间为例&#xff09; 2 AOP工作流程 3 AOP核心概念 4 AOP配置管理 4-1 AOP切入点表达式 4-1-1 语法格式 4-1-2 通配符 4-2 AOP通知类型 五种通知类型 AOP通知获取数据 获取参数 获取返回值 获取异常 总结 5 …...

小红书笔记详情API分析及读取深度探讨

一、引言 随着社交电商的蓬勃发展&#xff0c;小红书凭借其独特的社区氛围和强大的内容生产能力&#xff0c;吸引了大量用户和开发者。对于开发者而言&#xff0c;小红书提供的API接口是获取其丰富内容的重要途径。本文将对小红书笔记详情API进行深入分析&#xff0c;并详细阐…...

【Yarn】通过JMX采集yarn相关指标的Flink任务核心逻辑

通过JMX采集yarn相关指标的Flink任务核心逻辑 文章目录 通过JMX采集yarn相关指标的Flink任务核心逻辑通过jmx接口查询Yarn队列指标请求JMX配置项核心处理流程输出到kafka格式通过jmx接口查询ResourceManager核心指标请求JMX读取配置yaml配置文件核心处理逻辑输出Kafka格式彩蛋 …...

【网络安全】PostMessage:分析JS实现XSS

前言 PostMessage是一个用于在网页间安全地发送消息的浏览器 API。它允许不同的窗口&#xff08;例如&#xff0c;来自同一域名下的不同页面或者不同域名下的跨域页面&#xff09;进行通信&#xff0c;而无需通过服务器。通常情况下&#xff0c;它用于实现跨文档消息传递&…...

基于springboot的码头船只货柜管理系统 P10078

项目说明 本号所发布的项目均由我部署运行验证&#xff0c;可保证项目系统正常运行&#xff0c;以及提供完整源码。 如需要远程部署/定制/讲解系统&#xff0c;可以联系我。定制项目未经同意不会上传&#xff01; 项目源码获取方式放在文章末尾处 注&#xff1a;项目仅供学…...

SpringMVC(二)原理

目录 一、配置Maven&#xff08;为了提升速度&#xff09; 二、流程&&原理 SpringMVC中心控制器 完整流程&#xff1a; 一、配置Maven&#xff08;为了提升速度&#xff09; 在SpringMVC&#xff08;一&#xff09;配置-CSDN博客的配置中&#xff0c;导入Maven会非…...

计算机网络:网络层知识点及习题(一)

网课资源&#xff1a; 湖科大教书匠 1、概述 网络层实现主机到主机的传输&#xff0c;主要有分组转发和路由选择两大功能 路由选择处理机得出路由表&#xff0c;路由表再生成转发表&#xff0c;从而实现分组从不同的端口转发 网络层向上层提供的两种服务&#xff1a;面向连接…...

题解:A. Noldbach Problem

问题描述 Nick 对素数非常感兴趣。他阅读了有关 Goldbach Problem 的内容&#xff0c;了解到每个大于 2 的偶数都可以表示为两个素数的和。于是他决定创造一个新问题&#xff0c;称为 Noldbach Problem。 Noldbach 问题的定义如下&#xff1a; 如果一个素数 $p$ 满足&#x…...

ESP32S3 + IDF 5.2.2 扫描WiFi

ESP32S3 IDF 5.2.2 扫描WiFi 目录 1 资料 2 通过Wi-Fi库扫描附近的网络 2.1 通过idf命令创建工程 2.2 编写测试用例 2.3 优化测试用例 3 小结 1 资料 在ESP平台基于IDF开发WiFi相关功能&#xff0c;主要就是基于IDF的Wi-Fi库进行二次开发。可供参考的官方资料&#xff…...

鸿蒙开发汇总

写在前面 汇总贴&#xff0c;整理在开发过程中遇到的有趣的、不太好解决的问题&#xff0c;记录一下思考的过程及自己的解决方案。 只做为技术分享&#xff0c;转载请标明出处。 ArkTs-this指向问题 ArkTs-Text组件长度计算不对的问题...

PDF阅读和编辑工具——xodo

本文给大家推荐一款好用的PDF阅读和编辑工具——xodo,一款免费的跨平台PDF阅读、编辑、批注工具。 注意xodo PDF Reader是免费的&#xff0c;xodo PDF Studio是收费的&#xff0c;但是xodo PDF Studio功能多很多。...

QT-------------自定义插件和库

以下是一个使用 Qt 实现图表交互操作的示例&#xff0c;涵盖了自定义图表视图类、不同类型的柱状图和饼图等内容。 实现思路 自定义图表视图类&#xff1a;创建一个从 QChartView 派生的自定义类&#xff0c;用于处理图表的交互操作。主窗口设计初始化&#xff1a;在主窗口中…...

《云原生安全攻防》-- K8s安全配置:CIS安全基准与kube-bench工具

在本节课程中&#xff0c;我们来了解一下K8s集群的安全配置&#xff0c;通过对CIS安全基准和kube-bench工具的介绍&#xff0c;可以快速发现K8s集群中不符合最佳实践的配置项&#xff0c;及时进行修复&#xff0c;从而来提高集群的安全性。 在这个课程中&#xff0c;我们将学习…...

PCA降维算法详细推导

关于一个小小的PCA的推导 文章目录 关于一个小小的PCA的推导1 谱分解 (spectral decomposition)2 奇异矩阵(singular matrix)3 酉相似(unitary similarity)4 酉矩阵5 共轭变换6 酉等价7 矩阵的迹的计算以及PCA算法推导8 幂等矩阵(idempotent matrix)9 Von Neumanns 迹不等式 [w…...

C++ 基础思维导图(一)

目录 1、C基础 IO流 namespace 引用、const inline、函数参数 重载 2、类和对象 类举例 3、 内存管理 new/delete 对象内存分布 内存泄漏 4、继承 继承权限 继承中的构造与析构 菱形继承 1、C基础 IO流 #include <iostream> #include <iomanip> //…...

Excel文件恢复教程:快速找回丢失数据!

Excel文件恢复位置在哪里&#xff1f; Excel是微软开发的电子表格软件&#xff0c;它为处理数据和组织工作提供了便捷。虽然数据丢失的问题在数字时代已经司空见惯&#xff0c;但对于某些用户来说&#xff0c;恢复未保存/删除/丢失的Excel文件可能会很困难&#xff0c;更不用说…...

人脑处理信息的速度与效率:超越计算机的直观判断能力

人脑处理信息的速度与效率&#xff1a;超越计算机的直观判断能力 关键词&#xff1a; #人脑信息处理 Human Brain Information Processing #并行处理 Parallel Processing #视觉信息分析 Visual Information Analysis #决策速度 Decision Speed #计算机与人脑比较 Computer v…...

Spring Boot 中的 classpath详解

Spring Boot 中的 classpath 详解 在开发 Spring Boot 应用时&#xff0c;理解 classpath 的概念对于配置、资源管理以及构建项目非常重要。特别是当我们使用 Maven 打包工具时&#xff0c;项目的资源文件在不同的阶段会被放置到不同的目录。本文将深入探讨 Spring Boot 中的 …...

标准库以及HAL库——按键控制LED灯代码

按键控制LED本质还是控制GPIO,和点亮一个LED灯没什么区别 点亮一个LED灯&#xff1a;是直接控制输出引脚&#xff0c;GPIO初始化推挽输出即可 按键控制LED&#xff1a;是按键输入信号从而控制输出引脚&#xff0c;GPIO初始化推挽输出一个引脚以外还得加一个GPIO上拉输入 但是…...

Spring Cloud (四、服务熔断降级-HyStrix)

spring cloud 概述 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系&#xff0c;每个依赖关系在某些时候将不可避免地失败。 服务雪崩 多个微服务之间调用的时候&#xff0c;假设微服务A调用微服务B和微服务C&#xff0c;微服务B和微服务C又调用其它的…...

【C语言】如何插入并播放音频文件

在 C 语言中处理音频文件可以是一个有趣且挑战性的任务&#xff0c;尤其是在嵌入式开发或多媒体程序开发中。尽管 C 语言本身并不直接支持音频处理&#xff0c;但可以通过集成第三方库来处理音频文件的解码和播放。本篇博客将介绍如何在 C 语言中插入并播放音频文件&#xff0c…...

图书项目:整合SSM

步骤&#xff1a; pom文件&#xff1a;导包&#xff0c;写入静态资源导出配置&#xff0c;连接数据库 建包&#xff1a;controller dao/mapper pojo service 配置文件&#xff1a;mybatis-config.xml applicationContext.xml&#xff08;Spring的配置文件&#xff09; datab…...

C#OPC(下)

安装 OPC UA SDK 通过 NuGet 包管理器&#xff0c;在 Visual Studio 中右键单击项目名称&#xff0c;选择 “管理 NuGet 程序包”&#xff0c;在搜索框中输入 “OPCFoundation.NetStandard.Opc.Ua”&#xff0c;找到对应的 OPC UA SDK 包后点击 “安装”&#xff0c;将其集成到…...

STLG_01_05_程序设计C语言 - 数据类型概念解析

一、典型例题 下面这些示例&#xff0c;将能够更熟练地运用C语言中的数据类型&#xff0c;加深对数据存储和处理的理解&#xff1a; 示例&#xff1a;确定变量a、b、c和d的数据类型&#xff0c;并说明它们的存储大小和取值范围 short int a -1000; unsigned int b 50000; f…...

使用工厂+策略模式实现去除繁琐的if else

使用工厂策略模式实现去除繁琐的if else 在中间有一个mapstruct的bug&#xff0c;即在修改实体类中的类型时&#xff0c;或者修改属性名字&#xff0c;mapstruct都无法进行转换&#xff0c;会报错&#xff0c;此时需要maven cleanmaven compile即可 前言 在这次的开发中&#…...

Apache MINA 反序列化漏洞CVE-2024-52046

漏洞描述&#xff1a; Apache MINA 是一个功能强大、灵活且高性能的网络应用框架。它通过抽象网络层的复杂性&#xff0c;提供了事件驱动架构和灵活的 Filter 链机制&#xff0c;使得开发者可以更容易地开发各种类型的网络应用。 Apache MINA 框架的 ObjectSerializationDeco…...

SpringSpringBoot常用注解总结

Spring&SpringBoot常用注解总结 1.SpringBootApplication 这个注解是 Spring Boot 项目的基石&#xff0c;创建 SpringBoot 项目之后会默认在主类加上。 SpringBootApplication public class SpringSecurityJwtGuideApplication {public static void main(java.lang.Str…...

设计模式 创建型 原型模式(Prototype Pattern)与 常见技术框架应用 解析

原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;其核心思想在于通过复制现有的对象&#xff08;原型&#xff09;来创建新的对象&#xff0c;而非通过传统的构造函数或类实例化方式。这种方式在需要快速创建大量相似对象时尤为高效&#x…...

cnPuTTY 0.82.0.1—PuTTY Release 0.82中文版本简单说明~~

2024-11-27 官方发布PuTTY 0.82主要包含如下变化&#xff1a; 1.Unicode处理进行了重大重构&#xff0c;以允许使用系统默认配置的字符集/代码页之外的Unicode字符。仅部分实现&#xff0c;其他尚未完成。 2.Unicode版本进行更新&#xff1a;所有字符分析均已更…...

TypeScript 常用类型

文章目录 1. 类型注解2. 原始类型3. 数组类型4. 联合类型5. 类型别名6. 函数类型7. 对象类型8. 接口类型8.1 接口声明8.2 接口继承 9. 元组类型10. 类型断言11. 字面量类型12. 枚举类型12.1 数字枚举12.2 字符串枚举 13. any 类型14. typeof 运算符 1. 类型注解 前言&#xff1…...

综合能源建模:理论、方法与实践

一、引言 随着全球能源需求的持续增长以及对能源安全、环境保护和可持续性发展的日益关注&#xff0c;综合能源系统&#xff08;Integrated Energy System&#xff0c;IES&#xff09;作为一种能够整合多种能源资源、实现能源高效利用和协同优化的解决方案&#xff0c;正逐渐成…...

《摄影艺术创作》慕课期末答案

《摄影艺术创作》慕课期末考试答案 题数 100 人们常说&#xff0c;“百闻不如一见”、“一图胜千言”&#xff0c;这强调的是 的表现力。 A视觉形象 B文字语言 C音响元素 D有声语言 “绘画是加法&#xff0c;摄影是减法”&#xff0c;主要是指无论摄影和绘画&#xff0c;都要…...

MySQL实用SQL示例

创建数据库 CREATE DATABASE zq-cloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;创建表 CREATE TABLE regulatory_firm_category (category_id int NOT NULL AUTO_INCREMENT COMMENT 分类id&#xff0c;自增主键,parent_id int NOT NULL COMMENT 父级id,category_…...

MySQL日志

MySQL日志 文章目录 MySQL日志binlogredoundoredo vs undo binlog binlog日志也就是二进制日志&#xff0c;把对于数据库的写入操作以二进制的形式保存到磁盘中。binlog日志是mysql的逻辑日志&#xff0c;可以理解为记录的是sql日志&#xff0c;由mysql的服务层进行记录&#…...

双目的一些文章学习

文章1 PSMNet https://arxiv.org/pdf/1803.08669PSMNet文章博客PSMNet文章中牵涉到的一些知识&#xff0c;空洞卷积&#xff0c;SPPNet网络&#xff0c;计算视差时用soft argmin代替argmin文章中引入了空洞卷积和SPPNet网络来融合多尺度的信息&#xff0c;又引入3D卷积来增加模…...

国产文本编辑器EverEdit - 批量转码转换行符

1 批量转码&转换行符 1.1 应用场景 如果用户批量在Windows编辑文件&#xff0c;要上传到异构系统&#xff0c;如&#xff1a;Linux&#xff0c;则需要批量转换编码和换行符&#xff0c;此时可以使用EverEdit的批量转码功能。 1.2 使用方法 选择主菜单文档 -> 批量转码…...

NextCloud服务安装与配置教程

NextCloud服务安装与配置教程 什么是 NextCloud: Nextcloud 是一款开源的私有云存储和协作平台,允许用户在自己的服务器上托管数据并管理团队协作。它可以作为一个功能丰富、安全可靠的替代方案,与商业云服务(如 Google Drive、Dropbox)相比提供更多控制和隐私保护。简单来…...

查看 SSD能承载的每秒随机IO次数

查看 SSD能承载的每秒随机IO次数 通常给大家的一个建议就是对于数据库部署的机器&#xff0c;一定要采用SSD固态硬盘&#xff0c;而不要使用机械 硬盘&#xff0c;因为SSD固态硬盘最强大的地方&#xff0c;就是他的随机IO性能非常高。 其次&#xff0c;光是用SSD还不够&#x…...

C# 设计模式(结构型模式):享元模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;享元模式 (Flyweight Pattern) 在软件开发中&#xff0c;尤其是在处理大量对象时&#xff0c;我们常常会面临内存和性能上的挑战。当多个对象具有相似的状态时&#xff0c;通常会占用大量的内存资源&#xff0c;从而…...

使用Python,networkx构造有向图及无向图以及图合并等api

使用Python&#xff0c;networkx构造有向图及无向图以及图合并等api 源码图的构造、节点及边的添加等有向图及无向图及多重图 参考 方法名方法作用subgraph(G, nbunch)返回包含nbunch节点的子图union(G, H[, rename])合并G和H图disjoint_union(G, H)合并G和H图cartesian_produc…...

【SOC 芯片设计 DFT 学习专栏 -- 测试向量生成 ATPG (Automatic Test Pattern Generation) 】

文章目录 OverviewATPG 的基本功能ATPG 的工作流程ATPG 应用场景示例示例 1&#xff1a;检测单个信号的 Stuck-at Fault示例 2&#xff1a;针对 Transition Fault 的 ATPG ATPG 工具与常用工具链ATPG 优化与挑战 Overview 本文主要介绍 DFT scan 中的 ATPG 功能。在 DFT (Desi…...

uniapp本地加载腾讯X5浏览器内核插件

概述 TbsX5webviewUTS插件封装腾讯x5webview离线内核加载模块&#xff0c;可以把uniapp的浏览器内核直接替换成Android X5 Webview(腾讯TBS)最新内核&#xff0c;提高交互体验和流畅度。 功能说明 下载SDK插件 1.集成x5内核后哪些页面会由x5内核渲染&#xff1f; 所有plus…...

树莓派之旅-在wsl-x86-64 上进行树莓派的交叉编译

前情提要&#xff1a; 想把自己花里胡哨的终端丢到树莓派上去&#xff0c;可是树莓派算力不够&#xff0c;编译时间过于漫长 交叉编译 定义网上有&#xff0c;懒得复制了&#xff0c;大概就是在本机电脑上编译目标平台的可执行文件 这里的目标平台是树莓派 使用 uname -m …...

JavaScript中Map与Object的区别

在JavaScript中&#xff0c;Map和Object是用于存储键值对数据的两种不同的数据结构&#xff08;Map是ES6新增的数据结构&#xff09;&#xff0c;它们在构造方式、键的类型以及原型继承等方面存在区别。 一、主要区别 1.构造方式 Map&#xff1a;Map只能通过构造函数new Map…...