c++
文章平均质量分 87
曾念念
这个作者很懒,什么都没留下…
展开
-
函数参数 &,const,以及没有
当函数参数为(vector<int> a)时,进行了vector的复制操作,当函数生命结束,a生命结束,不会改变调用参数的数组。当函数参数为(vector<int>& a)时,实际上是指针的赋值,没有复制操作。在1.修改vector 2.vector参数较大 时使用,可以节约不少时间。如果既不想其被修改,又不想复制(浪费时间,空间)在&前面加上const...原创 2020-04-21 17:19:28 · 262 阅读 · 0 评论 -
吉姆拉尔森:日期题目:星期几,相差天数。
星期几:Kim Larsen Calculation Formulaif(month == 2 || month == 1) { month+=12; --year;}int weekday=(day + 1 + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400)%7;(年份偏差) 365 = 7*52+1:...原创 2020-04-11 18:18:50 · 505 阅读 · 0 评论 -
DFA:字符串转换整数
Deterministic Finite Automaton自动机主要是要明确 :条件状态比如: leetCode8. 字符串转换整数 (atoi)其中表格状态可以用unordered_map构造,并且用一个state(int)记录当前的行状态, get_col(char c)获取列状态,table获取state行状态。于是可以写出代码:class Automation{...原创 2020-04-03 11:17:16 · 199 阅读 · 0 评论 -
c++ unordered_map
如果需要计算string s 中每个字母出现的字数除了一个个加s[i]-'a'作为下标还可以unordered_map<char,int> mp`for(char c : s) mp[c]++;原创 2020-03-19 09:54:32 · 257 阅读 · 0 评论 -
leetcode:螺旋矩阵:一点就通:超详细解答:
思路主要是利用++行++列每次最终的位置就是终点。(0-2列)m=2;(0-2行)n=3(行有三个数)row=0,col=-1;要从(0,0)开始所以为了统一的++col要从-1点开始。下面给出代码vector<int> res; if(matrix.empty()) return res; int m=matrix.size()-1;...原创 2020-03-17 22:46:08 · 120 阅读 · 0 评论 -
LeetCode:对角线遍历:30行代码最详细
思路(0-2=3行)M=2,N=3(0~3=4列);i(0-5)记住j是行,k是列;matrix[j][k]:为偶数为红色;奇数为蓝色(外循环i)偶数(红色):j=M; j–; k++;(当k<=N&&j>=0)奇数(蓝色):j=0; j++;k–; (当j<=M && k>=0)并且因为j+k === i注意上图蓝色与...原创 2020-03-17 21:00:31 · 539 阅读 · 0 评论 -
完全平方数:广搜bfs,动态dp,四平方定理:更详细解答
(给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。)最少:方法一-1:BFS (超时)队列内容为(当前还需要减去的数字,已经减去数字的个数)开始:队列进入(要求的数字n,减去的数字个数0)当队列不为空:出队:当前数字,已经减了几个数字了;如果当前数字为0也就是减去的等于要求的数字 比较步数与最...原创 2020-03-15 18:52:51 · 228 阅读 · 0 评论 -
C++:分治法求数组中最大最小值
查找的void func(int A[],int low,int high,int& minp,int& maxp){ int x, y; if (low == high)maxp = minp = A[low]; else if (low == high - 1) { minp = min(A[low], A[high]); maxp = max(A[low...原创 2020-03-13 11:46:01 · 1429 阅读 · 0 评论 -
C#
Visual Studio2E2//2*10^2命名:只有变量为Camel,其他都为Pascal命名法。修饰符在定义方法时修饰符包括 virtual(虚拟的)、abstract(抽象的)、override(重写的)、static(静态的)、sealed(密封的)。override 是在类之间继承时使用的。get.set注意与java区别//设置图书价格属性//设置图书价格属性pub...原创 2020-03-09 10:19:18 · 214 阅读 · 0 评论 -
vector溢出
vector<int> a直接取a[5]是会溢出的使用vector前要先定义vector<int> child(num_people,0); (个数,初始值)不然会报错原创 2020-03-06 20:52:02 · 1380 阅读 · 1 评论 -
C++:字符串KMP算法
i:主串j:模式串的 下标(常取1~m);next[]数组:可部分重叠,但不可是本身。next[j]:所求最长前后缀中前缀最后一位的下标,从next[j]处的字符开始重新与主串比较好处:不需要回溯,减少了I/O操作字符串均是从1开始(1<=~<=str.len)求next【】数组字符串都从1开始,0表示为没有匹配的元素,要移动主串。所以i=1,j=0; 当substr[i...原创 2020-03-06 16:46:36 · 204 阅读 · 0 评论 -
C++:Hash字符串;回文字符串(hash+二分)
int范围内:进制数设置为107级别的素数(比如10000019或1e7+19),mod设置为109(1000000007或1e9+7)级别的素数,冲突概率最小。stringHashToIntlong long hashstringtoInt(string str){ //使用longlong是担心H中途溢出,但%后为int范围 long long H = 0; for (int ...原创 2020-03-06 10:40:56 · 505 阅读 · 0 评论 -
C++:动态规划(2)背包问题以及leetcode凑硬币问题
找这个阶段的状态和上各阶段的状态关系01背包:每件商品只有一件dp[i][v]:前i件物品恰好装入v的背包中的最大价值状态:放i,求前i-1件商品恰好装入v-w[i]的背包中的最大价值+第i件商品的价值。不放i,求前i-1件商品恰好装入v的背包中的最大价值。状态转移方程:都是求最大价值dp[i][v]=max( dp[i-1][v] , dp[i-1][v-w[i]]+c[i...原创 2020-03-05 20:45:33 · 473 阅读 · 0 评论 -
C++:动态规划DP;
动态规划:将子问题的解记录下来,(记忆花搜索)从顶到底和最大的路径状态:dp[i][j]走左边走右边状态转移方程:从边界开始(底开始),往上走,第[i][j]的状态就是最大的加上它自己。dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + f[i][j]//边界就是他自己for (int j = 1; j <= N; ...原创 2020-03-05 16:46:35 · 5689 阅读 · 0 评论 -
C++:图的总结;以及拓扑排序;关键路径(AOV,AOE区别)
拓扑排序精髓就是找点,indegree数组–方法一:没有用队列int inDegree[maxn] = { 0 };并在初始化时收集好每个点的入度。按照:找indegree=0的点删该点的边(其他点的入度)重复操作直到找到不到返回-1/*initialize map and degree*/void init()/*get dot in 0 degree*/int ge...原创 2020-03-05 10:35:02 · 624 阅读 · 0 评论 -
超级玛丽C语言
实验内容:大一C语言程序设计-游戏-SuperMario 实验工具:codeblocks & ege 代码内容: #include<stdio.h> #include<graphics.h> #include<windows.h> #include<time.h&g...原创 2018-01-09 14:53:27 · 31735 阅读 · 16 评论 -
C++:Floyd;最小生成树:Prim及用priority_queue堆优化;Kruskal
首先强调:Floyd是全源最短路径;看以k为中介(一个for循环),枚举所有顶点对(二个for循环即可)最短路径:Floyd其中distG初始值不能为INT_MAX会溢出,INT_MAX=231-1,超过即溢出,最后值会错误#include<iostream>using namespace std;const int maxn = 100;const int INF ...原创 2020-03-03 22:16:28 · 320 阅读 · 0 评论 -
STL:vector;set;map;自定义计算器优先级;背包问题
vectorsetstringvector:变长数组定义vector<typename> name;vector<int> v1;vector<char> v2;vector<double>v3;vector<className> v4;都可变长的二维数组[i][j]vector<vector&l...原创 2020-03-03 13:36:20 · 137 阅读 · 0 评论 -
c++: Bellman-ford:进阶Dijkstra;SPFA:进阶Bellman-ford;四种方法dijkstra/+dfs;bellman,spfa实现点权最大
每轮遍历图中所有边, 时间复杂度O(NE) 顶点*边数 。Bellman遍历该点的所有边:使用邻接表。Bellman-ford给我的感觉就是一个点根据这个点所有的边,每一个点的每一条边都不止走一次。一直向四边扩散。Dijsktra:给我的感觉一步一步走,每一次走就确定一个点,每个边只经过一次。Bellman:有负值的时候需要判断,如果源点到的最短路径上有负值就返回falsebo...原创 2020-03-03 13:35:50 · 173 阅读 · 0 评论 -
C++最短路径:dijkstra邻接矩阵、邻接表;优化:新增边权(花费);点权(物资);求最短条数;求全部最短路径;dijkstra+dfs
邻接矩阵:fill(G[0], G[0] + MAXN * MAXN, INF);初始化很重要一定要是maxnmaxn 不然可能有没覆盖到的,这个maxnmaxn值得是个数。Dijkstra:s到达每个顶点的最短路径bool set[]:标记所有的点:在不在数组int dist[] :表示当前最优的到每个点的最短路径长度,供选择下一个点。int path[]:记录前一个顶点。(用栈反向...原创 2020-03-03 11:10:51 · 1030 阅读 · 0 评论 -
考研复试指南
科研方向与自己兴趣一致的导师。联系时间初试成绩出来后;复试前一周内:通过邮件告诉导师要参加复试了。通过学长学姐或者直接问导师得到手机号;短信导师已经到了,问什么时候有空争取去见面。3-4个感兴趣的导师,...原创 2020-03-03 09:13:29 · 441 阅读 · 0 评论 -
C++ Map用法实例,map实现求有关系小组范围地图dfs邻接矩阵;关注人数影响范围bfs邻接表
map用来映射,比如不想输入数字可以用他来映射可以用他来映射姓名和编号。因为是相互关系:我和你有通话记录,你也我就也有通话记录,这是无向图。删除一个另一个也得删除。所以用邻接矩阵而不用邻接表。find()函数,返回key元素的迭代器 if (StringToInt.find(name) != StringToInt.end()) {//找得到 return StringToInt[...原创 2020-03-01 15:00:41 · 334 阅读 · 0 评论 -
c++:哈夫曼树实现(用一般排序方法、用堆实现方法)
第一种方法:排序1.从小到大排序,‘2.头两个相加赋值到第二个,3.再排序(或优化为往后比较赋值);4. 循环2.3.const int maxn = 1001;int fruit[maxn], n;void create(int n){ for (int i = 1; i <= n; i++) { cin >> fruit[i]; }}i...原创 2020-02-29 11:51:40 · 505 阅读 · 0 评论 -
堆:c++建堆;堆排
堆排序堆,由数组(1~n)下标的为堆元素。建堆: 由n/2->1反向枚举调整致堆顶删除堆顶:由第一个元素(堆顶)和最后一个元素交换后,数组长度-1(删除最后那个元素)。再向下调整堆顶。堆排,由每次第一个元素都是最值,每次都将第一个元素和最后一个元素-i交换,并且向下调整的总长度-i.调整n次即可添加元素:添加到堆最后并且向上调整,每次都和父元素比较,直到比较到堆顶,或者中途已经...原创 2020-02-29 10:52:48 · 248 阅读 · 0 评论 -
AVL平衡二叉树C++实现操作:创建和删除;先序/后序和中序确定一颗二叉树
平衡二叉树先序/后序和中序确定一颗二叉树平衡二叉树#include<iostream>#include<algorithm>#include<vector>#include<queue>using namespace std;struct Node { int data; int height; Node* lchild;...原创 2020-02-29 10:45:28 · 253 阅读 · 0 评论 -
欧几里得算法-最大公约数,最小公倍数;大整数运算
最大公约数:欧几里得算法原理:a,b的公约数就是b,a%b的公约数(a>b)辗转相除法。int gcd(int a, int b){ if (b == 0) return a; else return gcd(b, a % b);}/* 如果b是0 那!b表示 非0 如果b不是0 那!b表示为0 */int gcd(int a, int b){ ret...原创 2020-02-26 12:33:33 · 398 阅读 · 0 评论 -
二分:精确二分;分割木棒;快速幂;随机数排序算法
二分查找:拓展:精度问题木棒切割快速幂归并排序:非递归实现二分基于有序序列的查找算法1.严格递增序列int BinarySearch(int a[], int low, int high, int x){ int mid; while (low <= high)//要有等于号,可能恰好就在中间,不等于的话就搜不到了。 { mid = (low + hig...原创 2020-02-26 08:47:38 · 191 阅读 · 0 评论 -
贪心算法;在c++中使用scanf;指针;浮点数比较;排名;;切割木棒;散列
求最优解: 动态规划、贪心算法。看每次的选择:整体最优解可以拆成局部最优解(贪心)。单元最短路径(Dijkstra、Floyd)、最小生成树(Prim、Kruskal)、哈夫曼编码(哈夫曼树,找两个最小的结点变成新结点)背包问题:拆成每次最优解解决:动态规划如果考虑特例,举出反例:用贪心算法得出的解不是最优解那就用动态规划。...原创 2020-02-25 10:34:15 · 300 阅读 · 0 评论 -
不稳定排序Sort();归并排序
#include< algorithm>sort(first,last,comp)first、last是栅栏现象,不是真正的元素,而是元素的起始地址。所以,只包括第一个元素到last指向元素的前一个元素,即不包括最后一个元素。comp:是一个函数或者是一个class,默认升序。例如:int a[5];sort(a,a+5);元素是0~4:所以是a+5;栅栏现象不会包...原创 2020-02-23 20:19:19 · 304 阅读 · 0 评论 -
优化快排
快速排序#include<iostream>#include<cstdlib>using namespace std;void quicksort(int a[], int left, int right){ if (left > right) return; int i = left, j = right, temp = a[i]; while (...原创 2020-02-23 12:34:22 · 144 阅读 · 0 评论 -
C++小结:继承和派生;string库;识别码转换
1.C++程序设计:利用------实现软件重用,可以多继承(允许一个派生类继承多个基类)。基类的对象可以作为派生类的对象使用:--------规则。派生说明符号public、private、protected,默认为—protected:只能在基类及其派生类中访问。public派生:基类和派生类的成员性质-------;protected派生:派生类成员性质public-------,...原创 2020-02-21 16:07:44 · 329 阅读 · 0 评论 -
2020 二月面试题
面试题1.关键字static作用 2.指针函数与函数指针 3.C语言实现多态继承原创 2020-02-01 22:21:48 · 83 阅读 · 0 评论 -
C++第四章运算符重载习题-6:使用类型转换符实现复数类和double类的相加运算
类型转换符:operator double(){return real;} 将Complex类转换为double return Complex类中的real; #include<iostream>using namespace std;class Complex{public: Complex(){real=0;imag=0;} Complex(d...原创 2018-12-24 21:46:59 · 834 阅读 · 0 评论 -
C++第四章运算符重载习题-4/5:矩阵与重载流运算符的运用
#include<iostream>using namespace std;class Rect{public: Rect(){row=0;col=0;} Rect(int r,int c):row(r),col(c){} friend Rect operator +(Rect&,Rect&); friend istream...原创 2018-12-24 21:20:27 · 239 阅读 · 0 评论 -
C++第四章运算符重载习题-3:转换构造函数 类对象与非类对象顺序任意之和
#include<iostream>using namespace std;class Complex{public: Complex(){real=0,imag=0;} Complex(int r){real=r;imag=0;} Complex(double r ,double i):real(r),imag(i){} friend C...原创 2018-12-24 20:48:43 · 189 阅读 · 0 评论