C语言算法基础
文章平均质量分 50
Keep_Trying_Go
无
展开
-
关于使用C语言实现负值和非负值进行左右划分,奇数和偶数进行左右划分
关于使用C语言实现负值和非负值进行左右划分,奇数和偶数进行左右划分原创 2022-12-12 15:32:49 · 653 阅读 · 0 评论 -
二叉排序树详解以及实现
二叉排序树详解以及实现原创 2023-01-02 20:18:13 · 2933 阅读 · 0 评论 -
回溯法求解n个元素的集合的幂集
回溯法求解n个元素的集合的幂集原创 2022-11-10 17:52:54 · 1743 阅读 · 2 评论 -
表插入排序
表插入排序原创 2022-10-25 20:09:27 · 1602 阅读 · 0 评论 -
2-路插入排序
2-路插入排序原创 2022-10-24 20:33:26 · 683 阅读 · 0 评论 -
静态树表的查找(最优查找树和次优查找树)
静态树表的查找(最优查找树和次优查找树)原创 2022-10-24 01:45:00 · 2794 阅读 · 0 评论 -
数据结构之折半查找(递归和非递归),插值查找和斐波那契查找
数据结构之折半查找(递归和非递归),插值查找和斐波那契查找原创 2022-10-24 00:15:00 · 720 阅读 · 0 评论 -
归并排序求逆序对(C语言)
归并排序求逆序对(C语言)原创 2022-10-05 18:53:13 · 2795 阅读 · 1 评论 -
使用C/C++实现字典树(数组或者链表方式)
使用C/C++实现字典树(数组或者链表方式)原创 2022-09-25 17:49:22 · 1772 阅读 · 0 评论 -
使用并查集实现查找无向图的连通分量和求解有向图的强连通分量
使用并查集实现查找无向图的连通分量原创 2022-09-11 16:50:10 · 2080 阅读 · 0 评论 -
使用C语言实现各种排序(总结)
使用C语言实现各种排序原创 2022-09-05 18:35:06 · 2396 阅读 · 0 评论 -
使用C语言实现散列表中的冲突处理方法
使用C语言实现散列表中的冲突处理方法原创 2022-09-04 18:38:33 · 1457 阅读 · 0 评论 -
使用C语言实现查找
使用C语言实现查找原创 2022-08-23 16:05:18 · 3288 阅读 · 0 评论 -
使用C++实现关键路径(关键活动)
使用C++实现关键路径(关键活动)原创 2022-08-22 18:04:27 · 1453 阅读 · 1 评论 -
使用C++语言BFS实现拓扑排序,BFS和DFS实现逆拓扑排序
使用C++语言BFS实现拓扑排序,BFS和DFS实现逆拓扑排序原创 2022-08-21 23:17:47 · 815 阅读 · 0 评论 -
动态规划中的多段图问题
多段图的最短路径问题:只有相邻的节点之间有联系多段图的定义:1.多段图是一个有向、无环、带权 图。2.有且仅有一个起始结点(原点source) 和 一个终止结点(汇点target)。3.它有n个阶段,每个阶段由特定的几个结点构成。每个结点的所有结点都只能指向下一个相邻的阶段,阶段之间不能越界。算法步骤:从前往后依次给所有结点编号;序号必须从0开始,依次递增,同一阶段的结点顺序可以随意;1.计算s->t的最短路径问题:首先进行部分分解d(s,v)递推公式:2.根据递推公式求出该图的原创 2021-04-22 13:46:44 · 3718 阅读 · 0 评论 -
最小环算法求解(Dijkstra算法+Floyd算法)
方法一:#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#include<cstring>using namespace std;const int maxx=105;const int inf=0x7ffffff;int w[maxx][maxx];int e[maxx][maxx];int dist[maxx];int p[maxx.原创 2021-05-02 19:15:19 · 833 阅读 · 0 评论 -
求解单源最短路径的几种算法
方法一:Dijkstra算法#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#include<stack>#include<vector>using namespace std;const int inf=0x3f3f3f3f;//用来标记不通的路const int maxx=100..原创 2021-05-02 19:02:16 · 1867 阅读 · 0 评论 -
使用C语言实现最小生成树
使用C语言实现最小生成树原创 2022-08-21 15:05:04 · 3926 阅读 · 0 评论 -
有关有向图和无向图
有关有向图和无向图原创 2022-08-20 18:44:35 · 687 阅读 · 0 评论 -
深度优先搜索算法(有向图和无向图)
1.深度优先搜索的思想:给定图G=(V,E)。深度优先搜索的思想为:初始时,所有顶点均为未被访问过,任选一个顶点v作为源点。该方法先访问源点v,并将其标记为已访问过;然后从v点出发,选择v的下一个邻接点(子节点)w,如果w已被访问过,则选择v的另外一个邻接点;如果w未被访问过,则标记w为已访问过,并以w为新的出发点,继续进行深度优先搜索;如果w的及其子节点均已搜索完毕,则返回到v,再选择它的另外一个未曾访问过的邻接点继续搜索,直到图中的所有点和源点所有路径相同的顶点均已访问过为止;若此时图G中任然存在未被访原创 2021-04-30 19:24:34 · 5788 阅读 · 1 评论 -
二分查找算法
定义:二分查找又称折半查找,它要求带查找的元素必须是按关键字大小有序排列的。问题描述:给定已排好序的N个元素,s1,s2,…,sN.现在要在这N个元素中找出一特定元素key.#include<stdio.h>#include<math.h>#define maxx 105int a[maxx];int Binaymid(int a[],int key,int n){ int left=0,right=n-1; while(left<=right){ int原创 2021-05-01 00:02:36 · 139 阅读 · 1 评论 -
广度优先搜索算法(有向图和无向图)
广度优先搜索算法的思想:以v作为源点出发访问其他节点,首先使用队列存储节点,再从队列中取出节点,遍历查找v和其他连通的节点,将和v连通的节点并且未被访问过的节点入队,遍历完和v连通的节点;再从队列中取出一个节点w,并以此节点为源点出发遍历和该源点连通的点并且是未被访问过的点入队,如此的重复下去,直到所有的点都被访问过。注意广度优先搜索是先访问和自身节点连通的节点,所以用队列来存储。`一:有向图方法一:#include<iostream>#include<algorithm>原创 2021-04-30 21:10:28 · 2205 阅读 · 2 评论 -
求解最大公约数算法(包含四种方法)
方法一:#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;int Gcd(int a,int b){ return b==0?a:Gcd(b,a%b);}int main(){ int a,b; while(cin>>a>>b){ int gcd=Gcd(a,b); cout<原创 2021-05-01 00:02:17 · 237 阅读 · 1 评论 -
旅行商问题(C++算法)
#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#include<cstring>using namespace std;const int maxx=105;const int inf=0x3f3f3f3f;int g[maxx][maxx];int x[maxx];int bestx[maxx];int bestl;int ...原创 2021-05-01 13:28:41 · 3933 阅读 · 6 评论 -
图的m着色问题
定义:给定无向连通图G=(V,E)和m种不同的颜色。用这些颜色为图G的各个顶点着色,每个顶点着一种颜色。如果有一种着色法使G中有边相连的两个顶点着不同颜色,则称这个顶点可着色。图的m着色问题是对给定图G和m中颜色,找出所有不同的着色方案。#include<iostream>#include<algorithm>#include<cstdio>#include<cstring> using namespace std;const int原创 2021-04-30 17:45:52 · 1878 阅读 · 1 评论 -
判断素数算法模版
1.判断素数的暴力方法 复杂度O(sqrt(n))bool check(int n){ for(int i=2;i*i<=n;i++){ if(n%i==0){ return false; } } return true;}2.using namespace std;const int maxx=1005;int vis[maxx];void sieve(int n){ vis[0]=vis[1]=1; for(int i=2;i<=n;i+原创 2021-05-01 14:46:08 · 109 阅读 · 0 评论 -
N皇后问题(回溯法)
方法一:#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=105;int A[maxx],B[maxx],C[maxx];int x[maxx];int n;int vis[maxx][maxx];int counts;void dfs(int k){ if(k>n){ counts++; for(int .原创 2021-04-30 17:15:36 · 74 阅读 · 1 评论 -
最大团问题
1.定义:其中,形式参数t表示第t个顶点,Place(t)用来判断第t个顶点能否放入团里。二维数组a[][]是图的邻接矩阵。一维数组x[]记录当前解。搜索到第t层时,从第1 个顶点用第t-1个顶点的状态存放入在x[1:t-1]中;一维数组bestx记录当前最优解,变量cn,bestcn分别记录当前已包含在团里面的顶点个数和当前最优解包含在团里面的顶点个数,初始化都为0。#include<iostream>#include<algorithm>#include<cst原创 2021-05-01 00:01:29 · 393 阅读 · 1 评论 -
最优三角剖分算法
例如五个矩阵连乘的某一个计算次序(A1A2)(A3(A4A5))对应的二叉树:#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;const int maxn = 50;const int inf = 0x3f3f3f3f;int s[maxn][maxn];int m[maxn][maxn];int w..原创 2021-05-02 00:00:38 · 344 阅读 · 0 评论 -
唯一分解算法
唯一分解定理:const int maxx=1e3+10;int vis[maxx];void init(int n){ int cnt=0; int res=n; int m=(int)sqrt(n+0.5); for(int i=2;i<=m;i++){ if(res%i==0){ vis[cnt++]=i; while(res%i==0){ res/=i; } } } if(res>1){ vis[cnt++]=res; }}.原创 2021-05-01 14:50:02 · 141 阅读 · 0 评论 -
使用C语言实现并查集
使用C语言实现并查集原创 2022-08-19 18:03:32 · 796 阅读 · 0 评论 -
使用C语言实现前,中,后序线索化二叉树
使用C语言实现前,中,后序线索化二叉树原创 2022-08-18 21:13:01 · 805 阅读 · 0 评论 -
使用C语言实现二叉树的链式存储
使用C语言实现二叉树的链式存储原创 2022-08-18 12:36:10 · 3113 阅读 · 2 评论 -
字符串的模式匹配
使用C语言实现模式匹配原创 2022-08-16 20:05:20 · 1604 阅读 · 0 评论 -
使用C语言实现矩阵转置(稀疏矩阵)
使用C语言实现矩阵转置(稀疏矩阵)原创 2022-08-15 15:18:53 · 12301 阅读 · 0 评论 -
使用C语言实现链队(带头结点和不带头结点)
使用C语言实现链队原创 2022-08-13 17:06:38 · 1259 阅读 · 2 评论 -
使用C语言实现队列
使用C语言实现队列原创 2022-08-11 18:18:09 · 495 阅读 · 0 评论 -
使用C语言实现链栈(带头结点和不带头结点)
使用C语言实现链栈(带头结点)原创 2022-08-11 15:13:43 · 4518 阅读 · 10 评论 -
使用C语言实现顺序栈
使用C语言实现顺序栈(动态)原创 2022-08-11 13:24:42 · 2691 阅读 · 0 评论