- 博客(255)
- 收藏
- 关注
原创 【数据结构】第四章 串
KMP算法的优化就是对next数组进行优化 并使用nextval作为新的模式串的回退数组,进而达到优化KMP算法,详细优化思想如下//对next数组进行优化->生成nextval数组 void GetNextVal(char * str , int len , int * next , int * nextval) {j
2023-03-29 12:05:30
108
原创 【计算机网络】第一章 计算机网络结构
计算机网络的标准化工作 计算机网络的标准化需要经历以下4个步骤∶①互联网草案;②建议标准(RFC文档);③草案标准;④互联网标准。
2023-01-30 11:45:01
361
原创 【操作系统】 第一章 操作系统概述
第一章 计算机系统概述 1.1 操作系统的基本概念 1.1.1 操作系统的概念 1.1.2 操作系统的特征 1.1.3 操作系统的目标和功能 1.1.4 习题 1.2 操作系统的发展历程 1.2.1 手工处理阶段 1.2.2 批处理阶段 1.2.3 分时操作系统 1.2.4 实时操作系统 1.2.5 网络OS+分布式OS 1.2.6 个人操作系统 1.2.7 习题 1.3 操作系统的运行环境 1.3.1 处理器运行模式 1.3.2 中断和异常的概念 1.3.3
2023-01-15 21:29:49
455
原创 【环境配置】vs2022引入libevent库
(0)这里直接提供生成好的静态库(1)下载解压后,有个libevent文件夹,可以随意放,但要记得路径,最好和项目同级目录,便于寻找。(2)确保该项目中有一个.cpp文件,右键项目属性->VC++目录->包含目录->libevent\include路径(3)属性->VC++目录->包含目录->libevent\include路径(4)属性->VC++目录->包含目录->libevent\WIN32-Code\nmake(5)属性->VC++目录->库目录->libevent\lib(6)属性->链
2022-10-24 22:34:05
1029
2
原创 【环境配置】vs2022搭建jsoncpp
(0)下载jsoncpp,这里直接提供已经生成好的静态库(1)下载解压后,有个json文件夹,可以随意放,但要记得路径,最好和项目同级目录,便于寻找。(2)确保该项目中有一个.cpp文件,右键项目属性->C/C+±>常规->附加包含目录->添加json/include路径(3)属性->链接器->常规->附加库目录->添加json/lib路径(4)属性->链接器->输入->附加依赖项->添加json/lib下的.lib文件名(5)属性->C/C+±>代码生成->运行库->多线程调试(/MTD)(6)
2022-10-24 22:28:06
2976
原创 【review-list 1】反转链表
解法一:双指针迭代(推荐)step1: 定义pre指向pHead前一个结点、next指向pHead下一个结点step2: 通过头指针的移动来不断使用pre、pHead、next指针进行方向逆转,直到pHead == nullptrstep3: 此时退出循环,pre指向最后一个结点,也就是反转后的头结点C++实现代码...
2022-06-14 23:35:11
198
原创 【C++】模板元编程栗子
一、题目描述使用c++提供的模板编程,将二进制数转换成十进制二、代码template<size_t N>class BinToDec {public: static const int value = BinToDec<N / 10>::value * 2 + N % 10;};template<>class BinToDec<0> {public: static const int value = 0;};int main(
2022-05-29 18:50:30
228
原创 【数据结构】并查集
文章目录一、引言二、C++实现三、测试一、引言并查集的相关介绍二、C++实现#include<iostream>using namespace std;class Ufset{private: int* parent; size_t size; //parent对象的个数private: void Showchild(int child)const { cout << child << " "; for (int i = 0; i
2022-05-29 18:14:17
137
原创 【数据结构】B/B-树(目录树)
引言关于B树的性质一、B树的结构二、B树的实现#include<iostream>using namespace std;#if 1//5分支Btree#define M 5 //奇数#define MAXSIZE (M-1) //最多元素个数#define MINSIZE (M/2) //最少元素个数 //B树class Btree{public: //关键码类型 using KeyType = char; //元素类型 typedef struct
2022-05-27 17:37:39
737
原创 【数据结构】字典树T树
文章目录为什么需要字典树?字典树的实现原理数据结点的设计为什么需要字典树?实现类似搜索引擎的效果,当输入“西安”关键字时,下面出现的联想词(如下图)字典树的实现原理数据结点的设计...
2022-05-21 20:56:51
334
原创 【设计模式】类关系
文章目录引言一、依赖Dependency二、关联Association(1)弱关联(2)强关联引言类与类之间的耦合性:一、依赖Dependency例:A类是B类的成员函数的参数、返回值(局部变量)class A{};class B{public: void FunB(A& a){} A GetA() { return A(); }};二、关联Association例:A类是B类的一个成员属性(1)弱关联class A{};class B{privat
2022-05-11 14:51:38
211
原创 【C++多线程】银行多人转账模拟
文章目录一、题目要求二、代码实现一、题目要求使用C++的线程并发库,实现并模拟多人在线同时转账的过程,确保转账不能出现差错。例如:Account A(“xiaoming”, 1000);Account B(“zhangqiang”, 2000);Account C(“zq”, 1500);B->A 200 A 1200 B 1800B->c 500 B 1300 C 2000C->A 300 A 1500 C 1700二、代码实现#if 1#inclu
2022-05-03 17:00:43
1387
原创 【C++多线程】生产者消费者模型
文章目录一、题目要求二、解答三、题目要求四、解答(1)行锁(2)表锁一、题目要求生产者消费者模型:在多线程下生产0~100个数,生产者线程1生产20个数据后,消费者线程1进行消费输出。二、解答使用到的技术:互斥锁、条件变量、多线程、双端队列#if 1#include<iostream>#include<deque>#include<mutex>#include<condition_variable>using namespace std
2022-04-29 19:41:26
1821
原创 【LC动态规划】542. 01 矩阵
文章目录一、题目描述二、算法分析三、代码一、题目描述二、算法分析三、代码class Solution {public: vector<vector<int>> updateMatrix(vector<vector<int>>& mat) { int m = mat.size(); int n = mat[0].size(); vector<vector<int>&g
2022-04-27 20:14:01
195
原创 【LC动态规划】91. 解码方法
文章目录一、题目描述二、算法分析三、代码一、题目描述二、算法分析三、代码class Solution {public: int numDecodings(string s) { int n = s.size(); vector<int> dp(n + 1, 0); dp[0] = 1; for(int i = 1; i <= n; ++i) { //单字符解析:当
2022-04-27 17:31:32
261
原创 【LC动态规划】最小路径和
文章目录一、题目描述二、分析过程三、代码一、题目描述二、分析过程三、代码class Solution {public: int minPathSum(vector<vector<int>>& grid) { int m = grid.size(); int n = grid[0].size(); vector<vector<int>> dp(m, vector<int>
2022-04-26 11:11:53
911
原创 【LC动态规划】不同路径II
文章目录一、题目描述二、分析三、代码一、题目描述二、分析本题是62.不同路径的障碍版,整体思路大体一致。但就算是做过62.不同路径,在做本题也会有感觉遇到障碍无从下手。其实只要考虑到,遇到障碍dp[i][j]保持0就可以了。也有一些小细节,例如:初始化的部分,很容易忽略了障碍之后应该都是0的情况。三、代码class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>&
2022-04-26 09:52:44
943
原创 【动态规划】判断子序列
文章目录题目描述双指针解法动态规划题目描述双指针解法class Solution {public: bool isSubsequence(string s, string t) { int m = s.size(); int n = t.size(); int i = 0, j = 0; while(i < m && j < n) { if(s[i] == t
2022-04-18 15:10:05
812
1
原创 【动态规划】买股票的最佳时期
文章目录一、题目描述二、动态转移方程三、题解一、题目描述二、动态转移方程三、题解class Solution {public: //动态规划 int maxProfit(vector<int>& prices) { int n = prices.size(); if(n < 2) return 0; vector<int> dp; dp.resize(n, 0);
2022-04-17 22:37:41
405
原创 【动态规划】打家劫舍
文章目录一、题目描述二、算法分析三、题解代码一、题目描述二、算法分析三、题解代码class Solution {public: int rob(vector<int>& nums) { int house_len = nums.size(); vector<int> dp; dp.reserve(house_len); for (int i = 0; i < house_len; ++i) { if (i == 0) {
2022-04-17 20:12:20
391
原创 【动态规划】机器人走m*n宫格
文章目录一、题目描述二、代码实现一、题目描述二、代码实现#include<iostream>#include<vector>using namespace std;void Robits(vector<vector<int>>& dp){ for (int i = 0; i < dp.size(); ++i) { for (int j = 0; j < dp[i].size(); ++j)
2022-04-17 12:19:50
804
原创 【动态规划】最长公共子序列
文章目录一、引言二、最长公共子序列三、解题思路四、代码五、代码优化一、引言二、最长公共子序列三、解题思路四、代码int LSCLen(char* arr, char* brr, int m, int n){ //if (nullptr == arr || nullptr == brr) return 0; if (m == 0 || n == 0) return 0; else { if (arr[m] == brr[n]) { return LSCLen(arr,
2022-04-14 16:25:53
151
原创 【分治策略】打印子集
文章目录一、题目描述二、解题思路三、代码实现一、题目描述通过使用分治策略,打印一个数组元素的所有子集输入:1 2 3输出:1 2 31 21 312 323二、解题思路通过这个程序的思路进行分析void fun(int i, int n){ if(i >= n) return; else { fun(i + 1, n); fun(i + 1, n); }}int main(){ fun(0, 3);}上述程序的递归活动如下我们在递推
2022-04-13 19:22:23
259
原创 【分治策略】全排列
文章目录一、题目描述二、思路分析三、递归程序一、题目描述二、思路分析若R = {1, 2, 3} 对应的全排列就是1 3 22 1 32 3 13 2 13 1 2进行层次分析:三、递归程序#include<iostream>using namespace std;#if 1void Perm(int* arr, int left, int right){ if (left == right) { //确定只剩下一个元素时 for (int i =
2022-04-13 18:20:25
387
原创 【算法】一维最接近点对问题
文章目录一、描述二、思路三、代码一、描述一维最接近点对问题:也就是寻找无序不重复数组的最小差值解题思想:分治策略二、思路三、代码//寻找非负整数序列(不重复)的最小差值#if 1//两边向中间划分int OnePartition(int* arr, int left, int right){ int tmp = arr[left]; int i = left; int j = right; while (i < j) { while (i < j
2022-04-12 18:40:22
1693
原创 【七】归并排序
归并排序归并排序的思想:类似于二叉树的后序遍历(根左右)。(递归过程中分组,回归过程中排序合并数据)//归并排序(递归)#if 1//有序合并void Merge(int* src, int* des, int left, int mid, int right){ int i = left; int j = mid + 1; int k = left; while (i <= mid && j <= right) { des[k++] = src[
2022-04-12 17:23:48
580
原创 【算法】分治策略
文章目录一、关于分治策略二、使用分治策略+递归解题一、关于分治策略分治策略: 简单来说就是将问题的规模变小,问题本身不变解题步骤:分解: 将原问题划分成子问题,规模变小递归: 递归求解子问题,若子问题规模足够小,此时停止递归,直接求解合并: 将小规模的解合并成原规模的解注意: 分治策略是一种处理问题的思想,递归是一种算法。二、使用分治策略+递归解题...
2022-04-12 17:16:14
2094
原创 【LC】31. 下一个排列
文章目录题目描述解题思路题解题目描述解题思路题解class Solution {private: //反转降序的后部分 void reverse(vector<int>& nums, int left, int right) { while(left < right) { swap(nums[left++], nums[right--]); } }public:
2022-04-03 18:44:21
830
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人