C
Ccfeiker
记录开发生活遇到的难题,只为成长为明天更好的自己!
展开
-
rcu锁原理以及rcu example学习
rcu锁原创 2023-01-13 16:42:40 · 961 阅读 · 0 评论 -
kmp算法模板
#include<iostream>#include<vector>#include<queue>using namespace std;/*next数组的含义初始化:next[0] = -1;next[i]:当当前位置不匹配时,需要回溯的位置如模板串 ababanext[] = {-1, 0, 0, 1, 2, 3} //最后一个位置next[5]=3 代表全部匹配需要回溯的位置,即前面有3个字符是重复的。可以看出next[i]其实也是当前下标原创 2021-06-22 10:59:25 · 234 阅读 · 0 评论 -
随机洗牌
#include<iostream>#include<vector>#include<cmath>#include<random>#include<cstdlib>using namespace std;/*假设一维矩阵,200个元素,下标为0-199,雷的个数为20个.雷所在位置为1,非雷的位置为0,将20个雷随机分配到矩阵的各个位置。初始化最后20个元素为1(即当前雷所在位置为1,非雷的位置为0)先选第199个数的位置,然原创 2021-03-14 22:19:48 · 147 阅读 · 0 评论 -
容器的erase 致使迭代器失效的问题
这里列举了vector、string、map(unordered_map)、set、deque 容器的erase方法总结如下:对于vector、string连续内存空间的容器,erase后返回的迭代器为删除后的下一个位置,而map、set、deque等链表类型的容器,erase后返回的迭代器为当前的位置,我们需要手动后移,两种不同类型的迭代器通用删除模板如 vector<int> a{1,2,3,4,5,6,7}; for(vector<int>::iterat原创 2021-03-05 11:33:17 · 660 阅读 · 0 评论 -
7种排序(冒泡、直接插入、选择、希尔、二路归并、快速、堆排序)以及稳定性
冒泡排序#include<iostream>#include<vector>using namespace std;void bubble_sort(vector<int> &arr){ for (int i = 0; i < arr.size() - 1; i++) //排序n-1趟 n为元素个数 { for (int j = 0; j < arr.size() - i - 1; j++) { if (arr[j] &g原创 2021-02-26 14:06:56 · 786 阅读 · 1 评论 -
常用模板类、容器、方法总结(string、vector、deque、stack、queue、list、set/multiset、map/multimap)等
总结1.vector和deque的功能类似,但deque支持头部插入和删除2.list为双向循环链表,他支持链表反转reverse和排序sort,注意:他的排序需要用对象调用sort方法与vector不同,vector的sort方法为sort(vector_a.begin(), vector_a.end());list还支持remove操作:remove(elem);//删除容器中所有与elem值匹配的元素。其他的容器没有该操作3.set容器和map容器默认按升序排列,如果想按降序排列可按照下列方法:原创 2020-12-30 16:28:57 · 240 阅读 · 0 评论 -
c和c++字符串和数字转换接口总结
c++的数字转string:to_string需要c++11支持函数原型:string to_string (int val);string to_string (long val);string to_string (long long val);string to_string (unsigned val);string to_string (unsigned long val);string to_string (unsigned long long val);string to_s原创 2020-12-10 17:50:50 · 474 阅读 · 0 评论 -
将n个相同的球,放进m个相同的箱子中,允许空箱,问有多少种不同的放法(球同,盒同,允许空箱)问题
/*将n个相同的球,放进m个相同的箱子中,允许空箱,问有多少种不同的放法((球同,盒同,允许空箱))假设7个球,4个箱子有11种放法:0,0,0,70,0,1,60,0,2,50,0,3,40,1,1,50,1,2,40,1,3,30,2,2,31,1,1,41,1,2,31,2,2,2思路:dp[i][j]:将i个球放进j个箱子中,共有多少种不同的放法dp初始化:dp[0][j] = 1; 将0个球放进j个箱子中,不管怎么放都有一种放法(允许空箱)dp[1][j]原创 2020-12-10 10:29:56 · 2826 阅读 · 0 评论 -
深拷贝与浅拷贝
参考:深拷贝与浅拷贝1 深拷贝与浅拷贝2转载 2020-11-24 14:44:51 · 97 阅读 · 0 评论 -
prim(普里姆)算法求图的最小生成树
prim算法求最小生成树:/*题目 1705: 算法7-9:最小生成树输入输入的第一行包含一个正整数n,表示图中共有n个顶点。其中n不超过50。以后的n行中每行有n个用空格隔开的整数,对于第i行的第j个整数,如果不为0,则表示第i个顶点和第j个顶点有直接连接且代价为相应的值,0表示没有直接连接。当i和j相等的时候,保证对应的整数为0。输入保证邻接矩阵为对称矩阵,即输入的图一定是无向图,且保证图中只有一个连通分量。输出只有一个整数,即最小生成树的总代价。请注意行尾输出换行。样例输入40原创 2020-09-29 17:10:56 · 1142 阅读 · 0 评论 -
centos7升级gcc4.8 g++4.8 到gcc8.3 g++8.3
参考文章:https://www.cnblogs.com/jixiaohua/p/11732225.html转载 2020-09-29 09:55:19 · 476 阅读 · 0 评论 -
迷宫问题(带权有向图)(BFS求解)
/*有一个n行m列的地图地图上每个格子要么是o,要么是xo表示这个格子是安全的x表示这个格子不能进入你现在在第0行,第0列(左上角)你希望走到第x行,第y列输入保证(0,0)是安全的向上走一格耗时a分钟向下走一格耗时b分钟向左走一格耗时c分钟向右走一格耗时d分钟问走到目的地点(第x行,第y列)最快需要多少分钟如果无法走到,输出-1输入描述:第一行输入T表示有T组数据(1<=T<=30)每组数据第一行输入两个整数 n,m(1 <= n, m <= 20原创 2020-09-18 17:29:48 · 2146 阅读 · 0 评论 -
多重背包问题
多重背包问题描述:题目描述有n种物品,小王有一个能装m千克的背包,想要装点物品回去。每种物品,有自己的重量w(千克)和价值v(元),以及他们的数量c。现在,物品的数量很大,而种类也不少。请你计算出,背包装的最大价值。输入第一行是整数n(n<=100),m(m<=3000),表示物品的种类和背包容量。接下来n行,每行3个数,w(w<=100),v(v<=100),c(c<=1000),表示重量,价值,和数量.输出一个数,表示最大价值。样例输入3 505原创 2020-09-17 17:04:41 · 156 阅读 · 0 评论 -
完全背包问题
完全背包问题的阐述:题目描述设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。输入第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);第2…N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。输出仅一行,一个数,表示最大总价值。样例输入10 42 13 34 57 9样例输出max=12完全背包问题跟01原创 2020-09-17 15:52:51 · 350 阅读 · 0 评论 -
01背包问题
/*01 背包问题:选与不选的问题一个容量为10的背包,共有4件商品,他们的价值和重量分别为 价值 重量 v w 2 2 4 3 3 5 7 5将他们装入背包中,所得到的价值最大是多少,并且求选择是哪些商品输入第一行 背包容量Capacity和商品数量n接下来一行输入4件商品的价值和重量输出:装入背包中的最大价值*/#include<stdio.h>#include<stdlib原创 2020-09-16 19:15:10 · 294 阅读 · 0 评论 -
二叉树的先序遍历、中序遍历、后序遍历 1、已知先序遍历、中序遍历求后序遍历 2、已知后序遍历、中序遍历求先序遍历
二叉树的先序遍历、中序遍历、后序遍历#include<stdio.h>#include<stdlib.h>typedef struct Node{ char data; struct Node* lchild; struct Node* rchild;}BNode, *BiTree;void create_bitree(BiTree* Tree){ char ch; scanf("%c", &ch); if (ch == '#') { *T原创 2020-09-15 20:10:38 · 256 阅读 · 0 评论 -
邻接矩阵的深度优先遍历和广度优先遍历(无向图)
邻接矩阵的深度优先遍历和广度优先遍历(无向图)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>#include<iostream>using namespace std;#define MAXGRAPH 100int visited[MAXGRAPH]; //访问过的顶点数组typedef struct Graph_G{ char ver原创 2020-09-15 12:39:31 · 4692 阅读 · 5 评论 -
差分数组的原理以及一种题型
本文参考博客:https://blog.csdn.net/qq_31601743/article/details/105352885问题背景如果给你一个包含5000万个元素的数组,然后会有频繁区间修改操作,那什么是频繁的区间修改操作呢?比如让第1个数到第1000万个数每个数都加上1,而且这种操作时频繁的。此时你应该怎么做?很容易想到的是,从第1个数开始遍历,一直遍历到第1000万个数,然后每个数都加上1,如果这种操作很频繁的话,那这种暴力的方法在一些实时的系统中可能就拉跨了。因此,今天的主角就出现了原创 2020-09-12 16:53:38 · 400 阅读 · 1 评论 -
memmove解决内存重叠问题
当使用memcpy时,存在内存重叠问题时可能会出错,memmove解决了此问题,解决问题的方法是当出现内存重叠时,从后往前开始拷贝,具体的memcpy和memmove参考博客:https://www.cnblogs.com/luoquan/p/5265273.htmlmemcpy的原理如下所示:void *memcpy(void *dest, const void *src, size_t count){assert(dest != NULL || src != NULL);char *tmp原创 2020-08-21 09:41:50 · 2031 阅读 · 0 评论