
算法学习之路
Free Jim
这个作者很懒,什么都没留下…
展开
-
欧拉打表
#include<iostream>#include<cstring>#include<cstdio>#include<ctime>#include<algorithm>using namespace std;#define M 1000bool visit[10100];int prime[10000]; voi...原创 2020-01-29 21:06:15 · 173 阅读 · 0 评论 -
后缀算术表达式
核心:\color{red}{核心:}核心:以栈结构为基,根据运算符的优先级来决定什么什么出栈\color{red}{以栈结构为基,根据运算符的优先级来决定什么什么出栈}以栈结构为基,根据运算符的优先级来决定什么什么出栈举例:A+(B*C-D)+EA读A【栈空】A+号入栈【+】A左括号入栈【+ ( 】AB读B 无符号入栈【+( 】AB乘号入栈【+( *】...原创 2020-01-02 23:58:44 · 648 阅读 · 0 评论 -
1 3 6 10 的规律
n*(n-1)/2n个顶点的完全无向图,有几条边——n*(n-1)/2n个顶点的完全有向图,有几条边——n*(n-1)原创 2020-01-02 23:34:07 · 3142 阅读 · 0 评论 -
归并排序
算法核心:大序列递归到小序列,进行排序然后合并\color{red}{大序列递归到小序列,进行排序然后合并}大序列递归到小序列,进行排序然后合并该算法的核心步骤在于——合并!\color{red}{该算法的核心步骤在于——合并!}该算法的核心步骤在于——合并!合并操作:\color{green}{合并操作:}合并操作:mark1 mark2分别用来标记两个子段抓住子段已经排序的特点\c...原创 2019-12-22 20:35:40 · 100 阅读 · 0 评论 -
希尔排序
算法核心:把序列分成若干组,每组进行直接插入排序,再逐步合并已经有序的若干个组\color{red}{把序列分成若干组,每组进行直接插入排序,再逐步合并已经有序的若干个组}把序列分成若干组,每组进行直接插入排序,再逐步合并已经有序的若干个组(这里的分组不是简单的分成若干段,而是每隔n个为一组,如下图)\color{red}{(这里的分组不是简单的分成若干段,而是每隔n个为一组,如下图)}(这里...原创 2019-12-22 19:58:52 · 121 阅读 · 0 评论 -
直接插入排序
算法核心:直接插入一个数到末尾,把当前的序列调整成有序,以待下一次插入\color{red}{直接插入一个数到末尾,把当前的序列调整成有序,以待下一次插入}直接插入一个数到末尾,把当前的序列调整成有序,以待下一次插入(对已经有序的序列来说,新插入数的位置容易确认)\color{red}{(对已经有序的序列来说,新插入数的位置容易确认)}(对已经有序的序列来说,新插入数的位置容易确认)解析:...原创 2019-12-22 19:34:29 · 102 阅读 · 0 评论 -
最小生成树Prime算法
算法核心思想:新加入点后,每次添加权值最小的边\color{red}{新加入点后,每次添加权值最小的边}新加入点后,每次添加权值最小的边变量及数据结构解释:(完整代码在最后)int W[8][8]={{0,1,2,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX},{1,0,INT_MAX,4,5,INT_MAX,INT_MAX,3},{2,INT_MA...原创 2019-12-21 19:46:52 · 597 阅读 · 0 评论 -
最短路径Dijkstra算法
算法的核心思想:从起点开始,每次以最优解\color{red}{最优解}最优解的思想确认下一个点思想误区:不是简单地每次取最短的!\color{red}{思想误区:不是简单地每次取最短的!}思想误区:不是简单地每次取最短的!而是要在记录的基础上取最小的\color{red}{而是要在记录的基础上取最小的}而是要在记录的基础上取最小的举例:1.确认起点——A2.确认第二个点——C确认...原创 2019-12-21 19:08:01 · 196 阅读 · 0 评论 -
连号区间OJ代码及解析
小明这些天一直在思考这样一个奇怪而有趣的问题:在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助。输入格式:第一行是一个正整数N...原创 2019-10-27 19:48:13 · 224 阅读 · 0 评论 -
汉诺塔OJ代码及解析(C)
#include<iostream>using namespace std;int counter=0;void move(int n,char a,char b,char c){ if(n<1)return; if(n==1){cout<<a<<"->"<<c<<endl;counter++;retu...原创 2019-10-23 10:34:54 · 559 阅读 · 0 评论 -
最大公约数C++
下面分别介绍三种算法:(1)暴力(2)辗转相除法(3)更相减损术首先,暴力 ,时间复杂度O(n)代码如下:#include<iostream>using namespace std;int main(){ int n,m,temp; cin>>n>>m; if(n>m) { temp=n;...原创 2019-06-25 13:51:05 · 1169 阅读 · 0 评论 -
a的b次方(只显示最后三位)C++
今天偶尔看到了以前做过的一道题以前我是这么做的。。。#include <iostream>using namespace std;int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int a[3]={0}; a[0]=n; for(int i=1;i<m;i++) { ...原创 2019-06-25 18:13:33 · 2495 阅读 · 1 评论 -
最小公倍数C++
下面提供三种算法:首先,是暴力代码如下:#include <iostream>using namespace std;int main(){ int n,m,i; cin>>n>>m; i=max(n,m); while(1) { if(i%n==0&&i%m==0)break...原创 2019-06-25 19:03:55 · 30153 阅读 · 8 评论 -
四舍五入c++
#include<iostream>#include<algorithm>#include <vector>#include <fstream>#include <string>#include <set>using namespace std;int main(void){ float n=2.63...原创 2019-07-01 16:38:14 · 333 阅读 · 0 评论 -
取数问题c++(含优化)
下面介绍三种方法:1.#include<iostream>#include<algorithm>#include <vector>#include <fstream>#include <string>#include <set>using namespace std;int f(int x){ ...原创 2019-07-01 17:21:43 · 2636 阅读 · 0 评论 -
平面分割c++(含优化)
下面介绍三种方法:1.#include<iostream>using namespace std;int f(int x){ if(x==1)return 2; return f(x-1)+x;}int main(){ int n; cin>>n; cout<<f(n); return 0;}...原创 2019-07-01 17:41:31 · 4951 阅读 · 0 评论 -
c++班级排名
如何不进行排序也能计算排名:#include<iostream>using namespace std;typedef struct stu{ int score; int rank; stu(int x){score=x;rank=1;}}stu;int main(void){ stu A[5]={(70),(80),(70),(98...原创 2019-07-01 13:53:35 · 2355 阅读 · 0 评论 -
高大上的算法不一定实用!
做了一题因式分解的题目这里涉及到了素数,我想到了最近学的欧拉打表的方法,就写了下面的错误示范:#include <iostream>#include <algorithm>#include<string.h>using namespace std;int prime[100000000]={0},t_e[100000000]={0};int ma...原创 2019-06-21 12:30:07 · 251 阅读 · 0 评论