算法基础知识储备
文章平均质量分 67
_奶酪
这个作者很懒,什么都没留下…
展开
-
初识kmp算法(呕心沥血之文----看视频+总结)
大一菜鸟,即将大二,依旧菜鸟一只QAQ最近在中国大学慕课上看数据结构的课程,我看的是西安邮电大学的数据结构与算法课,kmp算法出现在“串”那一章节具体内容我就不细讲了,大家可以去看一下。老师讲得还是很明白的。 next数组的实现 注意:网上的课程中默认字符串的下标从1开始实现思路:比如j=4时next[4]=2,即下次比较时从第二个字符开始比较(下标从1开始),第一个...原创 2018-08-10 15:57:08 · 1808 阅读 · 0 评论 -
【学习笔记】multiset+multimap之equal_range、upper_bound、lower_bound、count
multiset:multiset中允许排序后用重复的元素,不去重multiset<int> a;a.insert(1);a.insert(2);a.insert(3);a.insert(1);a.insert(2);a.insert(2);遍历:begin()和end()multiset<int>::iterator it;for(it...原创 2019-03-08 10:53:48 · 746 阅读 · 0 评论 -
【数位dp】模版总结
数位dp:数位dp一般用于求数a~数b之间符合条件的数字个数,如30~40883之间不含47的数字个数由前缀和【a,b】=【a,0】-【b-1,0】有:ans=solve(b)-solve(a-1);具体用法请参考【数位dp】专题下的例题大佬博客1:https://blog.csdn.net/wust_zzwh/article/details/52100392大佬博客2:htt...原创 2019-03-15 17:47:54 · 197 阅读 · 0 评论 -
【枚举排列】生成1~n的排列&&生成可重集的排列
生成1~n的排列:#include <iostream>#include <cmath>#include <cstring>#include <cctype>#include <algorithm>#include <stdlib.h>#include <vector>#include &原创 2019-02-27 14:12:08 · 266 阅读 · 0 评论 -
【技巧总结】string和char[]之前的相互转换(c_str()+strcpy+stringstream.str())
string->char[]使用<cstring>头文件中的c_str()函数,c_str()返回的是一个指针常量,一定要使用strcpy完成赋值#include <cstring>#include <iostream>using namespace std;int main(){ string s; char a[20]...原创 2019-03-02 19:54:46 · 1173 阅读 · 0 评论 -
【学习笔记】n皇后问题的解决方法+改进代码(回溯递归)
方法1:用(i,C[i])记录皇后所在的位置,递归回溯(for),注意皇后不在同列和对角线上tot记录方法数#include <iostream>#include <cmath>#include <cstring>#include <cctype>#include <algorithm>#include <s...原创 2019-03-01 14:24:41 · 634 阅读 · 0 评论 -
【学习笔记】生成下一个排列(STL库函数next——permutation)
代码:int main(){ int n,p[10]; cin>>n; for(int i=0;i<n;i++) cin>>p[i]; sort(p,p+n); do{ for(int i=0;i<n;i++) printf("%d ",p[i]); ...原创 2019-02-28 22:32:02 · 583 阅读 · 0 评论 -
【学习笔记】子集生成的方法
二进制法(最简单,位运算符与&):二进制中1代表选择,0代表不选择,用if(s&(1<<i))判断该输出哪个注意如n=5时,输出的结果是0~4的子集,若要改成1~5的只需把输出的i+1即可void print_subset(int n,int s){ for(int i=0;i<n;i++) if(s&(1<&...原创 2019-02-28 22:24:53 · 226 阅读 · 0 评论 -
set_union()和set_intersection()用法:原来并集和交集这样求!
set_union()和set_intersection()是STL内置的集合操作set_union()1.将两个int[](必须有序)合并到一个vector<int>中,结果自动去重#include <iostream>#include <vector>using namespace std;int main(){ ios::sy...原创 2019-01-26 13:47:56 · 9458 阅读 · 7 评论 -
【学习笔记】堆的定义及其建立、排序等基本操作的实现
目录堆的定义:堆的基本操作的代码实现:详情请参见《算法笔记》P335,此处只做简单的学习笔记记录。 堆的定义:堆是一棵完全二叉树,树中的每个结点的值都不小于(或不大于)其左右孩子结点。堆一般用于优先队列的实现(目前不是很懂),故默认使用的是大顶堆(每个结点的值都大于或等于其左右孩子结点,小于等于时即为小顶堆)。 堆的基本操作的代码实现:堆的定义:因为堆是完全...原创 2018-10-16 23:07:19 · 288 阅读 · 0 评论 -
【学习笔记】平衡二叉树(AVL树)简介及其查找、插入、建立操作的实现
目录平衡二叉树简介:各种操作实现代码: 详细内容请参见《算法笔记》P319初始AVL树,一知半解,目前不是很懂要如何应用,特记录下重要内容,以供今后review。 平衡二叉树简介:平衡二叉树由两位前苏联科学家提出,并以两者的名字命名,故称AVL树。AVL树是一棵二叉搜索树(BST),平衡指的是对AVL树的任意结点,其左子树和右子树高度之差的绝对值不超过1。...原创 2018-10-13 00:25:04 · 1319 阅读 · 0 评论 -
01背包问题+例题
目录QUESTION:解法:二维数组:时间复杂度和空间复杂度都是O(n*V)一维数组:时间复杂度O(n*V),空间复杂度O(V)例题:ac代码:QUESTION:有n件物品(每种物品都只有一件),w[i]表示物品的重量,v[i]表示物品的价值,现有一个容量为V的背包,应该如何选物品使得书包内装的物品的value之和最大呢? 解法:二维数组:时间复杂度和空...原创 2018-10-05 16:28:09 · 6556 阅读 · 0 评论 -
链表的基本操作:创建、插入、删除操作对应c/c++代码
链表的创建 #include <iostream>#include <stdlib.h>using namespace std;struct node{ int data;//数据域 node *next;//指针域};node* create(int array[]){ node *head,*p,*pre; head...原创 2018-08-28 21:10:56 · 347 阅读 · 0 评论 -
string头文件函数用法大总结
C++对应的头文件:#include <cstring>C对应的头文件:#include <string.h> 声明一个字符串变量 1)string s;//声明s字符串2)string s(str);//str赋给s3)string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值4)strin...原创 2018-08-18 03:18:26 · 7296 阅读 · 0 评论 -
输入输出知识点和问题超全总结(持续更新中)
Scanf函数返回值就是读出的变量个数,如:scanf( “%d %d”, &a, &b ); 如果只有一个整数输入, 返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。EOF是一个预定义的常量,等于-1 cin>> 用法1:输入一个数字或字符 用法2:接收一个字符串,遇“空格”、“TAB”、“回车”就结束c...原创 2018-08-12 17:10:16 · 726 阅读 · 0 评论 -
【模板】lucas定理和扩展lucas定理(组合数取模)
#include<iostream> #include<cstdio> #include<ctime> #include<cstring> #include<cstdlib> #include<vector> #define LL __int64 using namespace std; LL...原创 2018-08-12 14:59:24 · 938 阅读 · 0 评论 -
平面圆域分割(欧拉公式)+例题
以下所涉及到的定理不太理解的盆友可以参考《算法笔记》这本书组合数那一章节的内容,故此处不做过多解释以牛客网小白月赛5为例:链接:https://www.nowcoder.com/acm/contest/135/F来源:牛客网 题目描述 签到题来了,送你们一个Python秒的题。 Apojacsleam来到了OI大陆,经过了连年征战,成为了一方国王。 ...原创 2018-08-11 21:00:30 · 4772 阅读 · 2 评论 -
重载运算符初识
废话不多少,直接上内容!struct node{ string name; int price; friend bool operator < (node a, node b){ return a.price>b.price; }};这个时候你可能会问: friend bool operator < (no...原创 2018-08-06 17:41:33 · 695 阅读 · 0 评论 -
【持续更新】实用算法小点总结(怕忘QAQ)
没格式就没格式了吧(。ì _ í。)#include <iostream>#include <algorithm>#include <string.h>#include <ctype.h>#include <set>#include <cmath>#include <queue>#include ...原创 2019-03-23 21:43:25 · 440 阅读 · 0 评论