![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
touristourist
这个作者很懒,什么都没留下…
展开
-
数据结构基础
二叉树https://www.cnblogs.com/Camilo/p/3903080.htmlhttps://blog.csdn.net/u010558281/article/details/74276577生成二叉树: 根据一串字符在内存中生成二叉树struct BiNode{ int data; struct BiNode* left; struct BiN...原创 2019-07-02 10:41:51 · 139 阅读 · 0 评论 -
最短路+差分约束
dijikstra不能求最长路spfa求最短路可以判断负环,求最长路可以判断正环差分约束系统详解(解释为什么要设置超级源点,判断连通性差分约束介绍POJ 1364 King(非连通图的差分约束,经典好题)再卖菜csdnSPFA(shortest path fast algorithm)及差分约束参考链接(夜深人静写算法)spfa求最短路/最长路数据结构及代码//SPFA求最短...原创 2019-06-29 21:53:50 · 294 阅读 · 0 评论 -
搜索算法
DFS深度优先搜索部分和问题:给定整数a1 ,a2 ,… an,判断是否可以从中选出若干数,使得他们的和恰好为k。若存在输出true,否则输出false.int a[MAX_N]; //a[0]~a[n-1]int n,k;bool dfs(int i,int sum) //表示已经从前i个数做出选择,当前所选数的和为sum.i=0时表示还未开始选择{ if(i==n...原创 2019-06-29 21:52:58 · 274 阅读 · 0 评论 -
各种排序
冒泡排序每次排序将当前最大的冒泡到当前需排序的最末尾。选择排序将当前待排序部分最小的数和当前数字交换,然后对下一个数字进行排序。插入排序当前处理数字的左边为已经排好序的,右边为待排序部分,将当前数字在左边数字中找到对应位置插入。void insertion_sort(int arr[],int len){ for(int i=1;i<len;i++){ ...原创 2019-06-29 21:52:22 · 103 阅读 · 0 评论 -
MST算法
无向图中,如果它的子图是连通图,并且是一颗树,则称其为生成树。如果生成树的各边权值之和最小,则称其为最小生成树(MST)。Prim算法求最小生成树:int cost[MAX_V][MAX_V]; //边int mincost[MAX_V]; //当前集合到该点的最短距离bool used[MAX_V]; //标记该边是否纳入集合中int V; ...原创 2019-06-29 21:51:41 · 3355 阅读 · 0 评论 -
STL及C++
字体:consolas字号:11devcpp支持c++11的命令 :-std=c++11Stack#include<stack>stack<TYPE> StackName;bool empty();void pop();void push(const TYPE &val);TYPE &top();size_type size();...原创 2019-06-29 21:50:00 · 293 阅读 · 0 评论 -
字符串hash
hash入门题字符串HASH字符串hash入门 字符串hash 洛谷hash模板题 hash入门到精通-知乎hash直观说就是将一个字符串映射到一个整数(hash值)。需要确定p和mod的值形成hash映射后,有如下应用:hash的多种应用求有多少不同的串:相同的串一定对应相同的hash值,不同的串一般大概率对应的是不同的值(有可能产生冲突),所以求出有多少不同的hash...原创 2019-06-29 21:48:38 · 195 阅读 · 0 评论 -
算法中数学问题
数学问题1.欧几里得及其扩展线段上格点的个数:int gcd(int a, int b) //欧几里得辗转相除递归程序,时间O(logmax(a,b)){ if(b==0) return a; //a,b再一次赋值后,当除数为0返回a,结束 else gcd(b,a%b); //否则a,b,a%b左移,a=b,b=a%b,再一次辗转}扩展欧几里得(青蛙的约会)...原创 2019-07-03 14:06:39 · 509 阅读 · 0 评论 -
其他面试问题(待更新
12个求种只有一个假球(不知道更轻还是更重),称三次找出将12个球,均分成A,B,C三堆,记为Ai、Bi、Ci。(i = 1,2,3,4)第一次称A,B两堆,有两种情况,分别讨论:❶平衡。异常球在C堆,A,B堆8个球正常。C堆中取C1、C2、C3.第二次称A1+A2+A3与C1+C2+C3。两种情况下:① 平衡。确定异常球为C4,解决。② 不平衡。两种情况:\1. ...原创 2019-07-03 14:04:35 · 161 阅读 · 0 评论 -
计算机面试问题(待更新
进程和线程线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统而言其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从...原创 2019-07-03 14:03:26 · 274 阅读 · 0 评论 -
关于OJ及IO
对于不定量组数据的输入:1.while(scanf("%d",&a)!=EOF) {...} 或者写成while(~scanf("%d",&a)) {...} scanf()函数返回成功赋值的数据项数,出错时则返回EOF,EOF定义为-1。 ~是按位取反,-1十六进制补码表示为0x ffffffff,f是二进制的1111,取反后就全部变成0了,于是while结束。...原创 2019-07-03 13:59:59 · 752 阅读 · 0 评论 -
面试算法?
链表逆序操作(不创建额外结构和空间使用head和prev,next三个指针,prev初始化为null,head初始化为原链表的头节点。head是当前逆序结果新的头,prev是这个新头的next详细链接100位十进制数转化为二进制数https://www.iteblog.com/archives/141.html就是对字符串的操作,类似可以得出100位二进制数转化为十进制数的算法找出N个...原创 2019-06-29 21:54:32 · 109 阅读 · 0 评论