- 博客(62)
- 收藏
- 关注
原创 图算法之最短路径总结
文章目录1、Floyd算法1.1 核心代码:1.2 基本思想1.3 完整代码1、Floyd算法多源最短路问题:求图中任意两点之间的距离1.1 核心代码:for(k=1;k<=n;k++)//通过前k号节点中转 for(i=1;i<=n;i++) for(j=1;j<=n;j++) e[i][j]=min(e[i][j],e[i][k]+e[k][j]);1.2 基本思想最开始只允许经过1号顶点进行中转,接下来只允许1号和2号顶点进行中转……允许经过1~n号所.
2022-04-27 22:40:55 1222 2
原创 C++全排列算法(STL)
文章目录1.next_permutation2.prev_permutationSTL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation。1.next_permutation//获得之后的字典序#include<iostream>#include<algorithm>using namespace std;int a[3]={1,2,3};int main (){ do {
2022-04-22 23:40:21 1113 2
原创 计算机天梯赛pat练习集L1-(1~30题)
文章目录:1、hello word2、打印沙漏3、个位数统计4、计算摄氏温度5、考试座位号6、连续因子7、念数字8、求整数段和9、N个数求和10、比较大小11、A-B12、计算指数13、计算阶乘和14、简单题15、和奥巴马一起画方块16、查验身份证17、到底有多二18、大笨钟19、谁先倒20、帅到没朋友21、重要的事情说三遍22、奇偶分家23、输出GPLT24、后天25、正整数A+B26、I LOVE GPLT27、出租28、判断素数29、是不是太胖了30、一帮一1、hello word#include
2022-04-13 17:08:30 1645 17
原创 字符串转换为数字
1.前提:我们经常在做算法题的时候输入输出需要用字符串进行读入,这样有利于后续的操作,但是往往在实现过程中有需要将某些字符串转换为数字,如果挨个字符进行遍历则效率太低而且会增加代码量,于是今天介绍一种方法;2.实现int main (){ string a;//需要转换的字符串 cin>>a; float sun;//转换之后的数字,如果转换之后是整数型的数字这里也可以定义一个int变量来接受 stringstream ss; ss<<
2022-04-10 15:45:52 811 5
原创 辗转相除法求最大公约数
1. 递归实现辗转相除法#include<iostream>using namespace std;int gcd(int a,int b){ return b?gcd(b,a%b):a;}int main (){ int a,b; cin>>a>>b; cout<<gcd(a,b); return 0;}2、结果
2022-04-03 18:44:32 453 7
原创 liunx系统编程学习第六天----进程间通信
文章目录1.学习目标2.进程间通信相关概念2.1 什么是进程间通信2.2 进程间通信的方式3. 管道-pipe3.1 管道的概念3.2 管道的原理3.3 管道的局限性3.4 创建管道-pipe函数3.5 父子进程使用管道通信1、利用管道完成父子进程间通信代码示例2、父子进程间通信,实现ps aux | grep bash3.6 管道的读写行为1、读操作2、写操作3.7 如何设置管道为非阻塞3.8 如何查看管道缓冲区大小4 FIFO4.1 FIFO介绍4.2 创建管道4.3 使用FIFO完成两个进程通信1.
2022-03-23 20:54:29 178 10
原创 liunx系统编程学习第五天----进程控制
文章目录1.学习目标2.进程相关概念2.1 程序和进程2.2 并行和并发2.3 PCB-进程控制块2.4 进程状态1.学习目标了解进程相关的概念熟练掌握fork/getpid/getppid函数的使用熟练掌握ps/kill命令的使用熟练掌握execl/execlp函数的使用说出什么是孤儿进程,什么是僵尸进程熟练掌握wait函数的使用熟练掌握waitpid函数的使用2.进程相关概念2.1 程序和进程程序,是指编译好的二进制文件,在磁盘上,占用磁盘空间, 是一个静态的概念.进程,一
2022-03-21 00:05:12 140 4
原创 验证父子进程能否共享全局变量
1.验证代码//验证父子进程能否共享全局变量#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/types.h>#include<unistd.h>int g_var=99;//定义一个全局变量int main (){ //创建子进程 pid_t pid=fork(); if(pid<0)//fork失败的情况 { per
2022-03-19 17:44:05 1948 1
原创 计算机网络(中科大郑烇)第四章笔记
第四章 网络层:数据平面1、导论1.1 网络层:数据平面本章目标:理解网络服务的基本原理,聚焦于其数据平面网络服务模型转发和路由路由器工作原理通用转发互联网中网络层协议的实例和实现网络层服务在发送主机和接收主机对之间传送段(segment)在发送端将段封装到数据报中在接收端,将段上交给传输层实体网络层协议存在于每一个主机 和路由器路由器检查每一个经过它的IP数据报的头部网络层的关键功能网络层功能:转发:将分组从路由器的输入接口转发到合适的输出接
2022-03-15 10:45:06 4411 1
原创 计算机网络(中科大郑烇)第三章笔记
第三章 传输层1、概述和传输层服务1.1 第三章:传输层目标:理解传输层的工作原理多路复用/解复用可靠数据传输流量控制拥塞控制学习Internet的传输层协议UDP:无连接传输TCP:面向连接的可靠传输TCP的拥塞控制1.2 第三章:提纲概述和传输层服务多路复用与解复用无连接传输:UDP可靠数据传输的原理面向连接的传输:TCP段结构可靠数据传输流量控制连接管理拥塞控制原理TCP拥塞控制1.3 传输服务和协
2022-03-06 23:09:49 3972 3
原创 计算机网络(中科大郑烇)第二章笔记
第二章 应用层0、总结提纲2.1 应用层协议原理2.2 Web and HTTP2.3 FTP*2.4 EmailSMTPPOP3IMAP2.5 DNS2.6 P2P应用2.7 CDN2.8 TCP套接字(Socket)编程2.9 UDP套接字编程目标网络应用的原理:网络应用协议的概念和实现方面传输层的服务模型客户-服务器模式对等模式(peer-to-peer)内容分发网络网络应用的实例:互联网流行的应用层协议HTTPFTPSMTP / P
2022-03-01 13:51:12 4698
原创 计算机网络(中科大郑烇)第一章笔记
计算机网络课程内容总结计算机网络和互联网应用层传输层网络层:数据平面网络层:控制平面数据链路层和局域网网络安全无线和移动网络多媒体网络网络管理第一章、计算机网络和互联网1、什么是Internet?**1.1 从具体构成角度 ** 零件的角度节点主机及其上运行的应用程序路由器、交换机等网络交换设备边:通信链路接入网链路:主机连接到互联网的链路主干链路:路由器间的链路协议1.2 从网络互联设备的角度协议控制发送 、接收消息如TCP、I
2022-03-01 13:49:12 4647
原创 STL小案例之员工分组
#1、案例要求:##2、代码#define _CRT_SECURE_NO_WARNINGS #include<iostream>#include<vector>#include<string>#include<map>#include<ctime>using namespace std;#define CEHUA 0#define MEISHU 1#define YANFA 2class Worker{public
2021-09-15 18:19:11 122
原创 C语言通过函数指针和回调函数实现动态多态效果
上期我们讲解了C++实现动态多态的原理,今天我们来讲解一下在C语言中如何做到这一点。众所周知C语言是一门面向过程的语言所以它没有封装继承多态这些属性,但是我们可以通过C语言的函数指针和回调函数实现类似动态多态的效果。C语言实现动态多态1. 函数指针:2. 回调函数:2.1 回调函数定义:2.2 回调函数的应用场景:3. 实现多态3.1 预备知识3.2 代码1. 函数指针:1.1 函数指针是指向函数的指针变量。1.2 通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。.
2021-09-13 23:54:04 687 5
原创 C++多态底层刨析(虚函数指针,虚函数表)
前言:相信小伙伴们在学习到C++面向对象特性之一的多态的时候,都或多或少有一些疑惑。搞不清楚多态在底层是如何实现的,今天我就带大家刨析一下多态的底层实现,了解一下虚函数指针和虚函数表到底是什么东西?(注意本文操作环境是VS2019 x86架构 32位机器)多态底层刨析1 、多态的定义和分类1.1 多态的定义1.2 多态的分类2、静态多态代码演示3 、动态多态的代码刨析3.1 动态多态代码演示3.2 代码刨析4、使用VS自带的开发人员工具检验4.1 找到VS2019开发人员工具4.2 查看有虚函数的父类.
2021-09-09 00:28:05 569 7
原创 链表(静态链表) 栈与队列 、单调队列、单调栈
一、链表(用数组模拟链表,即静态链表、算法题一般用这种)1、单链表题目:2、代码#include<iostream>using namespace std;const int N=100010;//head表示头结点的下标//e[i]表示节点i的值//ne[i]表示节点i的next指针是多少//空节点的下标为-1//idx存储当前已经用到哪个点int head,e[N],ne[N],idx;void init(){ head=-1; idx=0;}
2021-08-17 19:11:29 190
原创 字符串匹配算法之KMP算法(C语言实现)
#1、KMP算法:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)##2、代码#include<string.h>#include<malloc.h>
2021-08-16 19:04:49 1204
原创 字符串匹配算法之BF算法(即暴力算法)
1、BF算法BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。2、C语言实现#include<stdio.h>#include<assert.h>#include<string.h>/*str主串sub
2021-08-12 22:32:00 3620
原创 单调栈的创建、压栈、出栈、遍历和清空
#include<stdio.h> #include<malloc.h>#include<stdlib.h>#include<stdbool.h>typedef struct Node{ int data; struct Node* pNext;}NODE, * PNODE;typedef struct Stack{
2021-08-12 16:49:48 106 1
原创 单链表的创建、遍历、判断是否为空、排序、插入结点和删除结点
#include<stdio.h> #include<malloc.h>#include<stdlib.h>typedef struct Node{int data;struct Node *pNext;}NODE,*PNODE; PNODE create_list() //创造链表函数 { int len;//用来存放有效节点的个数
2021-08-07 15:44:08 308
原创 双指针算法、位运算、离散化、区间合并
一、双指针算法1、题目:2、代码#include<iostream>using namespace std;const int N=100010;int n;int s[N],a[N];//s数组用来判断区间内是否有连续数字 int main (){ cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int res=0; for(int i=0,j=0;i<n;i++) { s[a[i]]++
2021-08-05 23:28:04 163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人