回溯算法
回溯算法介绍与基本使用 1. 什么是回溯算法? 回溯算法(Backtracking)是一种通过试错来寻找问题解决方案的算法思想。它通过逐步构建候选解,并在确定当前路径无法得到有效解时,回溯到上一步尝试其他可能的路径。回溯算法常用于解决组合优化、排列组合、子集生成等需要遍历所有可能性的问题。 2. 回溯算法的基本思想 试错思想:通过递归或迭代逐步构建候选解 剪枝操作:当发现当前路径不可能得到解时,提前终止该路径 状态管理:在递归过程中维护和恢复状态(通过栈或参数传递) 3. 适用场景 ✅ 组合问题:从n个元素中选k个的所有组合 ✅ 排列问题:全排列、N皇后问题 ✅ 子集问题:求集合的所有子集 ✅ 分割问题:字符串分割为回文子串 ✅ 棋盘问题:数独、单词搜索 4. 算法基本结构 12345678910def backtrack(路径, 选择列表): if 满足结束条件: 结果集.append(路径) return for 选择 in 选择列表: if 不满足剪枝条件: 做选择(加入路径) ...
线段树的概念与算法
前言 线段树是一种二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。线段树具有以下性质: 线段树的每个结点代表一个区间; 线段树的每个叶结点代表一个长度为1的区间; 线段树的每个非叶结点代表一个长度大于1的区间; 线段树的每个非叶结点的左子树代表一个左半区间,右子树代表一个右半区间; 拥有这种性质的搜索树,时间复杂度是O(logn),所以线段树是一种高效的数据结构。 这里,我们用数组来表示线段树,其中数组下标代表结点编号,结点下标为i的结点,其左子结点下标为2i+1,右子结点下标为2i+2。 本文子问题是记录区间最小值,所以线段树结点中存储的是区间最小值。 线段树的构建 线段树的构建过程如下: 确定线段树的深度,即log2(n)向上取整; 创建线段树,每个结点包含一个区间和两个子结点; 代码 12345678910void build(vector<int> &arr, int start, int end, int id) { if(start == end) { ...
pygame小游戏---小恐龙跳跃
前言 学习pygame的第一个小游戏,挺适合做经典谷歌小恐龙跳跃 仓库地址:github 代码部分 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178import pygame #...
排序算法
排序算法 基础排序算法 冒泡排序 123456789101112131415161718192021222324class MAOPAOSORT {public: void sort(vector<int>& nums) { if(nums.empty()) { return; } maopaosort(nums); }private: void swap(int& a, int& b) { int temp = a; a = b; b = temp; } void maopaosort(vector<int>& nums) { for (int i = 0; i < nums.size(); i++) { for (int j = 0; j <...
hexo一键部署脚本与优化
hexo一键部署脚本与优化 前言 接前hexo初步搭建,本文将介绍如何使用一键部署脚本,并对其进行博客优化。 butterfly主题优化 主题优化 1,下载butterfly主题 1git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly 2,修改主题配置文件 在博客主文件夹创建_config.butterfly.yml文件,并修改主题配置文件_config.yml,将主题修改为butterfly。 1234# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme:...
链表的二分查找--跳表
前言:链表的二分查找 链表与数组相比,最大的优势在于插入和删除操作的时间复杂度是O(1),但是查找操作的时间复杂度是O(n)。如果需要频繁进行查找操作,那么链表的时间复杂度就会很高。为了解决这个问题,我们可以使用二分查找的思想来优化链表的查找操作。 这里介绍一种基于链表和二分查找思想的跳表(Skip List)数据结构。跳表是一种随机化的数据结构,它通过在链表上建立多级索引来加速查找操作。跳表的时间复杂度是O(logn),与平衡树的时间复杂度相当,但是实现起来更简单。 跳表的基本概念 跳表是一种随机化的数据结构,它通过在链表上建立多级索引来加速查找操作。跳表的基本思想是将链表分成多个层次,每一层都是一个有序的链表。在最高层,链表中的元素是全局有序的,而在低层,链表中的元素是有序的,但是排序的范围更小。通过这种方式,我们可以快速定位到目标元素所在的区间,从而加速查找操作。 跳表的实现 1,skipnode节点 12345struct SkipNode { int val; struct SkipNode *next; struct SkipNode...
hexo初步部署日记
hexo初步部署日记 前言: hexo是一款基于node.js的静态博客框架,可以快速生成静态网页托管在github上(最重要的是不用花钱)。 github官网 1. 安装node.js 下载地址 2. 安装git 下载地址 3. 安装hexo 这里需要管理员权限,在终端打开管理员cmd或者win+x打开管理员powershell 1npm install -g hexo-cli 如果出现报错,输入下面代码(注意这是powershell时用,不是cmd) 1Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned 4. 检查是否成功安装 12345node -vnpm -vhexo -v 出现版本号即成功安装 5. 配置用户名和链接到你的邮箱 123git config --global user.name "yourname"git config --global user.email "youremail" 6. 创建ssh密钥 1ssh-keygen -t...
FirstPessage
开启博客新征程 今天,我的初创博客正式上线了。 这是一次发文尝试,也是标志成功搭建博客。 以下是平台的主要菜单选项,通过这些菜单,你可以快速进入不同的页面,开启追番之旅。 123menu: Home: / || fas fa-home 追番: /bangumis/index.html || fas fa-home Home(首页):链接为 / ,点击这个选项,你可以回到平台的首页,在这里你可以浏览到平台的最新动态、推荐内容等。图标为 fas fa-home ,代表着 “家” 的概念,方便你随时回到起始页面。 追番:链接是 /bangumis/index.html ,这个页面是追番的核心区域。在这里,你可以找到各种各样的动漫作品,无论是热门新番还是经典老番,都能满足你的追番需求。同样,图标也是 fas fa-home ,便于你识别和点击。











