![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
主要以C++为主
HASH CUMIN
键盘不烂我不慢
展开
-
二叉树算法
数据结构二叉树题总结原创 2022-12-11 00:03:16 · 355 阅读 · 1 评论 -
并查集
#include<bits/stdc++.h> using namespace std; int n,m; int a,b; int friends[100]; int isRoot[100]; int find(int x) { int a=x; while(x!=friends[x]) x=friends[x]; while(a!=friends[a]) { int z=a; a=friends[a];原创 2021-04-18 17:53:26 · 100 阅读 · 0 评论 -
图的最短路径
Dijkstra 解决无负权图的最短路径问题。 1. 记录所有最短路径 #include <bits/stdc++.h> using namespace std; const int maxn=2000;//最大顶点数 const int INF=100000;//无穷大 int n; bool vis[maxn]={false};//vis[i]==true表示顶点i已访问 int d[maxn],G[maxn][maxn];//d记录最短距离 vector<int> pre[ma原创 2021-04-14 07:42:34 · 150 阅读 · 0 评论 -
图的遍历 C++(邻接矩阵/邻接表)
DFS 基本思路 就是将经过的顶点设置为已访问,在下次递归遇到这个顶点就无视,直到整个图顶点都被标记已访问。 伪代码思路 DFS(u){//访问顶点u vis[u] = true; //设置u点已访问 for(从u出发能到达的所有顶点v) if vis[u] == false //如果v未被访问 DFS(v); //递归访问v } DFSTrave(G){ //遍历图G for(G的所有顶点) //防止非连通图的情况,有多个连通块 if vis[u] == false //如果u未被访问原创 2021-04-12 20:35:02 · 580 阅读 · 0 评论 -
活动安排问题 贪心算法 C
基本思路 将活动按结束时间降序排列,从第一个活动,按照第i个活动结束时间和第i+1个活动的开始时间是否兼容取0或1. 源码 /** * 活动安排问题 * s[]开始时间 f[]结束时间 A[]取不取这个活动,1表示取,0表示不取 * index从1开始计算 * */ #include <stdio.h> int A[20] = {0}; int s[20] = {0, 1, 3, 0, 5, 3, 5, 6, 8, 8, 2, 12}; int f[20] = {0, 4, 5,原创 2021-01-11 14:00:29 · 428 阅读 · 0 评论 -
最长公共子序列 动态规划 C
问题描述 如果Z既是X的子序列,又是Y的子序列,则称Z为X和Y的公共子序列,求Z的最长值 基本思路 如果xm = yn,则zk = xm = yn 且 Zk-1是Xm-1和Yn-1的一个LCS 如果xm != yn 且 zk != xm,则Z是Xm-1和Y的一个LCS 如果xm != yn且 zk!= yn,则Z是X和Yn-1的一个LCS 从底边为1开始记录 源码 /** * 最长公共子序列 * */ #include <stdio.h> #include <stdl原创 2021-01-11 10:31:19 · 163 阅读 · 0 评论 -
矩阵连乘问题 动态规划 C
问题描述 给定6个矩阵{A1,A2,A3,A4,A5,A6},其中Ai和Ai+1是可乘的(i=1,2,…,5)。考察这6个矩阵的连乘积A1A2A3A4A5A6。 A1 A2 A3 A4 A5 A6 30*35 35*15 15*5 5*10 10*20 20*25 最终输出的得到结果应为: 15125 ((A1(A2A3))((A4A5)A6) 基本思想 分析最优解的结构 建立递归关系 计算最优值 构造最优解 本例 矩阵经乘积计算量从下往上算,边从左往右推进 源码 #include原创 2021-01-10 16:53:11 · 1215 阅读 · 0 评论 -
二分查找法 C
基本思想 将n个元素分成个数大致相同的两半 取a[mid]与x比较,如果x=a[mid]则找到,算法终止 如果x<a[mid],则只在数组a左半部继续搜索x 如果x>a[mid],则只在数组a右半部继续搜索x 源码 /* 二分搜索法 */ #include<stdio.h> // 有序数组 int que[10]={1,2,3,4,5,6,7,8,9,10}; // 二分搜索 int BinarySearch(int x,int l ,int r) { int原创 2021-01-09 19:52:41 · 127 阅读 · 2 评论 -
哈希表实现电话号码查找系统
main.c文件 #include"hash.h" int main() { char s[20]; int n,Fn; int num;//contact number Bridge head;//include namehash table and phonehash table while(1) { Menu(); printf("Enter:"); scanf("%d",&n); switch(n) { case 1: printf("Ente原创 2020-06-05 13:48:01 · 8018 阅读 · 11 评论 -
第9章 排序算法
背景 学生成绩统计: 给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法。 数据结构 根据题意不能直接把分数进行数字比较,而是要建立student的数据结构 typedef struct { char name[8]; int score; } student; 算法 以下代码中的 n 为主函数输入的学生信息个数。 所有算法最终都是以降序排序。 直接插入排序法 类...原创 2020-04-13 15:47:50 · 2140 阅读 · 0 评论