数据结构与算法
主要以C++为主
wlop98
键盘不烂我不慢
展开
-
二叉树算法
数据结构二叉树题总结原创 2022-12-11 00:03:16 · 434 阅读 · 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 · 140 阅读 · 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 · 190 阅读 · 0 评论 -
图的遍历 C++(邻接矩阵/邻接表)
DFS基本思路就是将经过的顶点设置为已访问,在下次递归遇到这个顶点就无视,直到整个图顶点都被标记已访问。伪代码思路DFS(u){//访问顶点uvis[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 · 627 阅读 · 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 · 455 阅读 · 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 · 204 阅读 · 0 评论 -
矩阵连乘问题 动态规划 C
问题描述给定6个矩阵{A1,A2,A3,A4,A5,A6},其中Ai和Ai+1是可乘的(i=1,2,…,5)。考察这6个矩阵的连乘积A1A2A3A4A5A6。A1A2A3A4A5A630*3535*1515*55*1010*2020*25最终输出的得到结果应为:15125((A1(A2A3))((A4A5)A6)基本思想分析最优解的结构建立递归关系计算最优值构造最优解本例 矩阵经乘积计算量从下往上算,边从左往右推进源码#include原创 2021-01-10 16:53:11 · 1329 阅读 · 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 · 171 阅读 · 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 · 8182 阅读 · 11 评论 -
第9章 排序算法
背景学生成绩统计:给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法。数据结构根据题意不能直接把分数进行数字比较,而是要建立student的数据结构typedef struct{ char name[8]; int score;} student;算法以下代码中的 n 为主函数输入的学生信息个数。所有算法最终都是以降序排序。直接插入排序法类...原创 2020-04-13 15:47:50 · 2186 阅读 · 0 评论