自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 找零钱问题

322. 零钱兑换518. 零钱兑换 II//dpint coinChange_dp(vector<int>& coins,int amount){ int n = coins.size(); //dp[i][j] : coins[0..i]元素替换成j的方法种数 vector<vector<int>> dp(n,vector<int> (amount+1)); //初始值:只用coins[0]替换 dp[0][j

2021-08-11 18:26:46 131

原创 Horspool算法

一、算法思想空间换时间把模式Pattern和文本Text的开头字符对齐,从模式的最后一个字符开始比较,如果尝试比较失败了,把模式向后移。向后移动的距离是查已构造好的移动表获得。每次尝试过程中比较是从右到左的。移动表的构造可以仅使用模式串Pattern,设字符c是文本Text中对齐模式串的最后一个字符的元素,那么在每次匹配失败时,就根据字符c查找移动表来确定移动距离(不管字符c和模式串的最后一个字符是否匹配)。对于每个字符c,可用以下公式算出移动距离:#include <iostream&gt

2021-07-02 12:05:26 720

原创 约瑟夫问题

int main(){ int n,m; cin>>n>>m; vector<bool> in(n+1,true); int last = 0; // 一次out一个 for(int i=1;i<=n;++i){ int cnt = 0; // 每次都必须报够m个数 while(cnt<m){ last++; if(l

2021-01-23 22:45:55 108

原创 奇偶校验(转换二进制、bitset)

输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如’3’,输出:10110011)。https://blog.csdn.net/meng_lemon/article/details/89060740七位二进制可表示所有字符的十进制ASCII码(0~127)。int main() { string s; vector<int> res(8); //7位二进制数表示字符的ASCII码,最高位为奇偶校验位 while (cin >> s)

2020-10-08 14:24:52 1406 1

原创 sort自定义排序

参考:https://blog.csdn.net/weixin_41588502/article/details/86620305?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai

2020-10-08 10:06:46 316 1

原创 由数组创建完全二叉树和二叉树的遍历

一、前序遍历//递归前序遍历void preorder(node*& root) { if (root == NULL) { return; } cout << root->val << ' '; //访问根节点 preorder(root->left); preorder(root->right);}//非递归前序遍历//借助栈,先压入根节点,每访问一个节点时出栈,然后先压右子树,再压左子

2020-10-07 22:51:11 464

原创 二叉排序树的创建查找与插入(C++)

一、创建(插入):递归node* insert(int x,node* pnode) { if (pnode == NULL) { pnode = new node(x); return pnode; } else { if (x < pnode->val) { //等于根节点不能插入! pnode->left = insert(x,pnode->left); }

2020-10-07 09:45:11 573

原创 大整数加法和乘法、浮点数加法

1.javapublic class sum{ public static void main(){ Scanner cin = new Scanner(System.in); while(cin.hasNext()){ BigInteger a = cin.BigInteger(); BigInteger b = cin.BigInteger(); BigInteger s = a+b; System.out.println(s); } }}2.c++数组模

2020-10-05 15:06:08 170

原创 vector数组中size函数的返回值问题

刷题时遇到下面的问题,此段代码会死循环! 问题在于size()函数的返回值!vector<int> nums{ 2,1 };for (int i = nums.size()-1; i >= nums.size()-2; i--) { //int res = nums[0]; //cout << res <<' '<< nums.size()<< endl; }std::vector::siz

2020-10-03 22:49:34 2316

原创 C++二维数组排序(sort)、sort中调用comp的一些注意

bool cmp(vector<int>& a, vector<int>& b) { return a[2] < b[2];}int main(){ vector<vector<int> > v = { {4,9,6},{1,2,3},{7,1,9},{10,0,6} }; //sort(v.begin(), v.end());//默认按每行第一个元素排序 sort(v.begin(), v.end(),cmp); for

2020-10-02 14:14:41 2094

原创 基于顺序结构和单链表的各种排序算法C++实现

1.直接插入排序时间复杂度O(n^2) 空间复杂度O(1)稳定:不会改变相等元素的相对位置。适用于顺序存储和链式存储。算法描述: L[1…n]初始L[1]是一个已经排好序的子序列;将L(i)(L[2…n])插入到已排好序的子序列 :(1)查找出L(i)在L[1…i-1]中的位置k;(2)将L[k…i-1]中的所有元素后移一位;(3)将L(i)复制到L(k)基于顺序存储的直接插入排序://直接插入排序(顺序存储)void straisort(vector<int>&

2020-09-26 10:20:59 1588

原创 最短路径C++( 广度优先搜索、Dijkstra算法和Floyd算法)

一. 单源最短路径(single - source shortest path)基于图的邻接矩阵存储。单源最短路径是指从一个顶点到其它各顶点之间的最短路径(single - source shortest path)。迪杰斯特拉(E.W.Dijkstra)于1959年提出了一个寻找单源最短路径的方法。其基本思想是,设置一个顶点集合S,并不断地作贪心选择来扩充这个集合。该算法属于算法设计方法中的贪心算法(greedy selector)类——总是作出当前看来最好的选择,通过获取局部最优,最终达到获取

2020-09-12 11:24:03 3777

原创 图的拓扑排序及关键路径C++实现(基于邻接表)

AOV网:顶点表示活动,弧表示活动间的优先关系的有向图。无有向环。AOE网:顶点表示事件,弧表示活动,权表示活动持续的时间的有向无环图。1.拓扑排序(AOV网)const int MAX_VERTEX_NUM = 20;//图的邻接表存储:对图的每个顶点建立一个单链表。需要两种类型的节点。一种是表头节点(数量=图的顶点数),以向量形式存储,以便随机访问任一顶点的链表;//一种是与表头节点表示的顶点邻接的顶点,链接到相应表头节点后面//与表头节点表示的顶点邻接的顶点的节点,包括一个顶点的数据域ad

2020-09-10 21:33:34 1175

原创 图的构造与表示(邻接表)及遍历(深搜和广搜及其应用)

struct GraphNode { int label; vector<GraphNode*> neighbors; GraphNode(int x) : label(x) {};};void DFS_Graph(GraphNode* node, int visit[]) { //数组作参数传给函数时,传的是指针 visit[node->label] = 1; printf("%d", node->label); for (int i = 0; i < n..

2020-09-10 11:45:44 655 1

原创 最小生成树之PRIM算法&Kruskal算法C++代码(详细注释)及复杂度分析

最小生成树之PRIM算法C++代码实现:#include <iostream>#include <vector>using namespace std;void prim(vector<vector<int>>& VGraph, vector<int>& lowcost, vector<int>& closest, vector<bool>& visited) { int si

2020-09-07 16:37:10 2564

原创 C++结构体指针做函数参数不会改变实参的值

参考 https://blog.csdn.net/c991262331/article/details/83274525在做一道经典的深度优先搜索二叉树的题目时遇到一个问题,即C++中将结构体指针作为参数传递时,并不会改变实参的值!原因是当结构体指针传递给函数时,会拷贝一份指针的值,但是函数内部的指针和函数外部的指针并不是指向同一个引用的,所以才会使得函数里面改变了,但是函数外部无变化,解决方案是在传参的时候,将结构体指针的引用传递过去。class Solution {public://算法:/

2020-09-01 16:21:26 1622 5

原创 回溯算法:子集、排列、组合的实现区别

参考:https://leetcode-cn.com/problems/subsets/solution/hui-su-si-xiang-tuan-mie-pai-lie-zu-he-zi-ji-wen-t/https://leetcode-cn.com/problems/combination-sum/solution/hui-su-suan-fa-jian-zhi-python-dai-ma-java-dai-m-2/子集问题可以利用数学归纳思想,假设已知一个规模较小的问题的结果,思考如何推导出原问

2020-08-31 21:42:12 447

原创 回溯算法递归调用过程解析

解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:1、路径:也就是已经做出的选择。2、选择列表:也就是你当前可以做的选择。3、结束条件:也就是到达决策树底层,无法再做选择的条件。代码方面,回溯算法的框架:result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) returnfor 选择 in 选择列表: 做选择 backtrack(路径, 选择列

2020-08-29 17:00:39 1576 1

原创 C++——右值引用和move语义解析

C++——右值引用和move语义的理解文章目录C++——右值引用和move语义的理解1.前言2.左值和右值3.左值引用4.右值引用5.move(移动)语义6.总结7.参考资料1.前言​ 在C++学习过程中,C++11的一个新特性——右值引用引起了我的关注,而且在此之前我对于C++中的左值和右值的概念比较模糊,因此在理解左值和右值的基础上,我对C++中的右值引用以及move语义进行了学习研究。2.左值和右值**左值 (lvalues):**指可以放在赋值号左边,可以被赋值的值;左值必须要在内存中有

2020-08-17 11:14:04 912

原创 动态规划-01背包/完全背包/多重背包问题详解

0-1背包问题给定一组多个(n)物品,每种物品都有自己的重量(wi)和价值(vi),在限定的总重量/总容量(C)内,选择其中若干个(也即每种物品可以选0个或1个),设计选择方案使得物品的总价值最高。eg:背包容量C=8,物品num价值vi重量wi112223354465贪心算法无法得到最优解。 易举反例。动态规划:确定状态:dp[i][j] 表示只考虑n件物品中的前i件物品中,在背包承重为j的前提下,能拿到的最大价值。如dp[3][

2020-08-15 23:49:39 586

原创 动态规划—leetcode三角形最小路径和详解

题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。解题过程:(1)原问题与子问题:原问题为求第一行到最后一行最小路径和。将其划分为子问题:第n-1行/第n-2行/…第i行

2020-08-13 17:54:08 552 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除