自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

明月如霜,照见人如画

日常学习中~~~~

  • 博客(82)
  • 收藏
  • 关注

原创 chapter §35 求最小生成树----Kruskal算法

思想对于给定的图G(V,E),初始状态每个顶点单独视为一个连通分量,每次从E中选择权值最小的边,如果这条边的两个顶点落在不同的连通分量中,则将该边加入到最小生成树当中。

2021-07-18 21:32:45 135

原创 chapter §34 求最小生成树----prim算法

思想对图G(V ,E)设置集合S来存放已经被访问的顶点,然后执行下面两个步骤,共执行n次。1、每次从集合V-S中选择与集合S最近的一个顶点,所谓最近,是指集合S中某一顶点v到V-S中的顶点u之间的边权最小,则u作为离S最近的顶点。...

2021-07-17 20:45:48 167

原创 chapter §33 求全源最短路径----Floyd算法

思想如果存在顶点k,使得以k作为中介点,从i到j的当前最短路径缩短,则使k作为i和j的中介点,即当dis[i][k]+dis[k][j] < dis[i][j]时,令dis[i][j]=dis[i][k]+dis[k][j]。注:dis[i][j]表示从i到j的最短路径,初始化dis[i][i]=0。const int INF = 10000000;//表示不可达void Floyd() { for (int v = 0; v < n; ++v) { for

2021-07-16 20:20:35 125

原创 PAT甲级【 A1003 Emergency 】

题目描述As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads. Amount of rescue teams in each city and the length of each road between any pair of cities ar

2021-07-07 21:28:21 68

原创 chapter §32 求单源最短路径----Dijkstra算法

思想给定图G(V,E),V为顶点集,E为边集。设置集合S存放已经确定最短路径的顶点,然后执行以下两个步骤:1、每次从集合V-S中选择从起点s能够到达的所有顶点中距离最小的顶点u,加入集合S。2、令u为中介点,优化起点s与所有从u到达的顶点v之间的最短距离。共执行n次,n为顶点个数。具体实现:设置bool型数组visit,表示顶点i是否已经确定最短路径,数组d存放起点到其他所有顶点的最短距离。每次从d中选择最小的顶点minNum加入S,即修改visit中对应值,然后更新d,即以minNum为中间

2021-06-30 18:56:35 75

原创 PAT甲级【 A1076 Forwards on Weibo 】

题目描述Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relations. When a user makes a post on Weibo, all his/her followe

2021-06-29 20:54:58 73

原创 chapter §31 并查集

#include <iostream>#include <set>using namespace std;const int MAX = 10;int father[MAX];//father[i]表示元素i的父结点bool flag[MAX] = {false};int count = 0;void initUFS() { //初始化 for (int i = 1; i <= MAX; ++i) { father[i] = i; .

2021-06-21 18:04:05 88

原创 chapter §30 堆排序

思想堆:对于含n个关键字的序列L[1,……,n],将其视为一棵完全二叉树,根结点i对应左右孩子分别为2i和2i+1,当根结点关键字L[i]大于等于左右子树的关键字时称为大根堆,当根结点小于等于左右子树关键字时,称为小根堆。堆排序:将堆顶元素和堆底元素交换,重新调整成堆,重复进行,直到堆中只有一个元素。#include <iostream>using namespace std;const int MAX = 50;int Heap[MAX] = {0, 32, 66, 64,

2021-06-20 15:19:09 91

原创 chapter §29 归并排序

思想将初始长度为n序列,一分为二,对得到的左边子序列继续二分,依次类推。直到最后左边的子序列划分所得两个子序列各包含一个元素,然后再将其两两归并,得到一个有序的子序列,然后再按照同样的策略继续划分右边的子序列,然后归并……直到最终归并为长度为n的有序子序列。#include <iostream>using namespace std;const int MAX = 100;void Merge(int a[], int left, int mid, int right) { /

2021-06-19 20:01:06 60

原创 chapter §28 简单选择排序

思想从当前待排元素中选择出最小的一个,如果序号和当前待排元素的下标一致,则直接进入下一轮选择,否则与待排部分第一个元素进行交换,共进行n-1趟。#include <iostream>using namespace std;void SelectSort(int *a,int n) { for (int i = 0; i < n-1; ++i) { //n-1趟排序 int index = i; for (int j = i + 1

2021-06-18 15:54:19 87

原创 chapter §27 快速排序

思想快速排序基于分治的思想,从当前待排序列中选取一个基准,也称为枢轴(通常取序列的第一个元素),将该基准元素放入其最终位置后,将序列一分为二,使得该基准以前的所有元素构成的子序列均小于等于基准元素,基准以后的所有元素构成的子序列均大于等于基准元素,这个过程称为一次划分。然后对划分所得的两个子序列再进行如上操作,直到每一个子序列内只剩下一个元素或者为空时停止。#include <iostream>using namespace std;const int LENGTH = 10;

2021-06-17 15:07:56 67

原创 chapter §26 冒泡排序

冒泡排序冒泡排序是众多排序算法中较为简单的一类,其核心在于交换,每次从前往后或者从后往前相邻元素进行比较,如果为逆序,则进行交换。因此对于n个元素,每一趟可将当前剩余元素中的最大值或最小值放到确定的位置。共进行n-1趟。可设置一个标志flag进行优化。#include <iostream>using namespace std;void BubbleSort(int *a) { for (int i = 1; i < 10; ++i) { //共进行n-1趟排序

2021-06-16 15:20:28 65

原创 chapter §25 希尔排序

核心思想以d为增量序列,将原始序列划分成多个子表,各个子表内部使用直接插入排序;然后再逐步减小d(一般可除以2),重复以上过程,直到d小于等于0。void shellSort(int a[], int n) {//对a[1]~a[n]进行排序 int d, i, j; for (d = n / 2; d >= 1; d /= 2) {//d依次除以2 for (i = d + 1; i <= n; ++i) { if (a[i] &

2021-06-15 18:32:51 77

原创 平衡二叉树代码实现

平衡二叉树(AVL树)的详细介绍:https://blog.csdn.net/qq_43643944/article/details/116354568#include <iostream>using namespace std;typedef struct BiTNode { //结点定义 int data; int height;//高度,表示以当前结点为根的子树的高度 struct BiTNode *lchild, *rchild;} BiTNode,.

2021-06-11 19:53:42 268

原创 chapter §24 插入排序

一、直接插入排序将待排序部分插入到前面已经有序的数列中,假设当前待排元素下标为i,则从第i-1个位置依次向前进行比较,若该元素大于当前待排元素,则将其后移一个位置,继续向前比较,直到比较到某一个元素小于待排元素或下标为0的元素为止。#include <iostream>using namespace std;void InsertSort(int *a) { for (int i = 1; i < 10; ++i) {//共进行n-1趟 int te

2021-06-09 19:09:54 81

原创 chapter §23 折半查找

折半查找又称为二分查找,其基于有序的顺序表,设置low和high两个工作指针,分别指向表头元素和表尾元素,记mid=(low+high)/2,每次查找从当前序列mid处开始,和关键字进行对比,若小于关键字的值,则令low=mid+1,即在右半子序列中进行查找;若mid处元素值大于关键字,则令high=mid-1,即在左半子序列中进行查找。#include <iostream>using namespace std;int BinarySearch(int a[], int val,.

2021-06-09 18:57:46 83

原创 PAT甲级【 A1043 Is It a Binary Search Tree 】

题目描述A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node’s key.The right subtree of a node contains only nodes with keys greate

2021-06-09 16:16:03 67

原创 PAT甲级【 A1053 Path of Equal Weight 】

题目描述Given a non-empty tree with root R, and with weight Wiassigned to each tree node Ti. The weight of a path from R to Lis defined to be the sum of the weights of all the nodes along the pathfrom R to any leaf node L.Now given any weighted tree, y

2021-06-05 19:58:06 106

原创 PAT甲级【 A1020 Tree Traversals】

题目描述Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree.输入描述Each input file co

2021-06-02 21:39:44 62

原创 chapter §22 拓扑排序

拓扑序列由一个有向无环图的顶点组成的序列,其满足:1、每个顶点出现且仅出现一次;2、若顶点A在序列中排到顶点B的前面,则图中不存在从顶点B到顶点A的路径。int indegree[MaxVertexNum];//各个结点的入度VertexType TopologicalOrder[MaxVertexNum];//保存拓扑序列bool TopologicalSort(ALGraph G) { //拓扑排序 queue<VertexType> Q; //保存度为0的顶点

2021-05-31 16:33:32 135

原创 chapter §21 广度优先遍历算法的应用------单源最短路径问题

给一顶点V,求V到图中其它顶点的最短路径,若无路径存在,即为无穷。注: 这里假定所有路径的权值均相同。一、算法框架int *BFS_Min_Distance(MGraph G, VertexType V) {//基于广度优先策略求顶点V到顶点i的最短路径 int dist[MaxVertexNum] = {INFINITY};//保存路径长度,初始化为无穷 dist[V] = 0; visitFlag[V] = true; Q.push(V); while .

2021-05-30 21:38:09 303

原创 chapter §20 图的遍历(深度优先遍历)

图的深度优先遍历,也称为深度优先搜索,简称DFS。其遍历过程为递归过程。思想:从顶点V出发,访问此顶点,同样设置访问标记并置访问标记为1,然后从V的未被访问的邻接点W出发继续深度优先遍历W的邻接点,依次递归遍历,直到图中所有顶点都被访问到。一、基于邻接矩阵的深度优先遍历const int MaxVertexNum = 100;//最大顶点数const int INFINITY = 65535;//表示无穷,即两个点顶点之间不存在边typedef char VertexType;//顶点类型t.

2021-05-26 14:40:08 138

原创 chapter §19 图的遍历(广度优先遍历)

图的遍历是指从图中的某一顶点出发,按照某种搜索策略沿着图中的边对图的所有顶点访问一次且仅访问一次。策略:从当前顶点出发,依次遍历与该顶点直接相连的所有顶点,然后再按照同样的策略遍历下一个顶点。显然在遍历过程中可能会出现回退现象,即一个顶点可能被访问多次。为此,设立一个标记数组,标记当前顶点是否访问过。另外,还要借助一个辅助队列,每当遍历到一个顶点,就将与该顶点直接相连的顶点入队。一、基于邻接矩阵的广度优先遍历#include <iostream>#include <queue&.

2021-05-25 16:45:07 137

原创 表达式求值问题

问题:给定一个合法的表达式,计算结果并输出。做法:1、先将中缀表达式转成后缀表达式;2、再进行后缀表达式求值。详细过程:https://blog.csdn.net/qq_43643944/article/details/115359682细节问题:1、栈使用STL中提供的stack容器;2、后缀表达式存放在队列中,利用STL提供的queue容器;3、运算符的优先级利用STL中的MAP来实现。#include <iostream>#include <stack>#inc

2021-05-24 18:58:22 183

原创 队列具体操作实现

详细说明:https://blog.csdn.net/qq_43643944/article/details/1153061351、顺序队列#include <iostream>using namespace std;typedef int ElemType;const int MAXSIZE = 10;struct SqQueue { ElemType data[MAXSIZE]; int front, rear;//队首指针、队尾指针};void In.

2021-05-22 14:49:30 82

原创 栈具体操作实现

详细说明:https://blog.csdn.net/qq_43643944/article/details/1152814251、顺序栈#include <iostream>using namespace std;const int MAX = 10;typedef int ElemType;struct SqStack { ElemType data[MAX];//存放栈中元素 ElemType top;// 栈顶指针,指向栈顶元素};void Ini.

2021-05-21 16:49:31 67

原创 双链表具体操作实现

详细说明:https://blog.csdn.net/qq_43643944/article/details/114790387具体代码#include<iostream>using namespace std;typedef struct DNode { int data; struct DNode *prior, *next;} *DLinkList;void InitDLinkList(DLinkList &L) {//初始化双链表 L .

2021-05-20 16:59:44 55

原创 单链表具体操作实现

详细说明:https://blog.csdn.net/qq_43643944/article/details/114754897代码示例:#include<iostream>using namespace std;typedef struct LNode { int data; struct LNode *next;} LNode, *LinkList;const int MAX = 10;void initLinkList(LinkList &L).

2021-05-19 16:21:19 153

原创 PAT甲级【 A1060 Are They Equal】

题目描述If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered equal since they are both saved as 0.123*105 with simple chopping. Now given the number of significant digits on a machine and two float numbers, you

2021-05-17 21:29:14 93

原创 组合数问题

一、求n!中质因子p的个数一般而言,可通过枚举1~n当中所有的数,分别计算每个数当中所含有质因子的个数,然后将结果进行累加。可得到一个O(nlogn)的算法。为了提高效率,我们可以观察1* 2* 3* 4* 5* 6……*n * n-1 * n,如果要求某一质因子,比如2的个数,只需依次计算含2的因子,2 ^ 2的因子,2 ^ 3的因子……然后分别将他们的个数相加即可。观察可发现,它们各自的个数恰好为n/2,n/2 ^ 2, n/2 ^ 3 ……因此便有了如下算法。1、递归写法//递归写法in

2021-05-14 17:15:59 198

原创 大整数的运算

两个大整数(如位数超过1000)的四则运算,显然不能按照普通的运算法则来计算,我们需要声明一个数组来保存每个整数,并且记录长度,即位数。数组中的每一个元素便对应整数当中的每一位,并且数组要提前初始化为0。在存每个数的时候按高位对应数组的高地址,低位对应低地址,即逆向存储。然后按运算法则对数组中的每一个元素即每一位进行运算。注:为了方便起见,在读入大整数时将其以字符串的形式读入,然后再将其转换为int型存入数组一、大整数定义const int MAX = 1000;//最大长度typedef st.

2021-05-13 14:58:35 681

原创 计算a^b%m(快速幂)

给定三个正整数a、b、m(a<10^9, b<10^18, 1<m<10^9),求 a^b%m。

2021-05-12 20:31:14 571

原创 chapter §18 图的邻接表表示

由于使用邻接矩阵存储一个图时,当该图为稀疏图时,会造成空间上的浪费,故采用邻接表的方式,即采用数组和链表相结合的方式。1、图中所有顶点采用一个一维数组存储,称为顶点表,并且对数组中的每一个元素设立一个指向第一个邻接点的指针。2、图中每个顶点的所有邻接点构成一个链表,称为边表。边表中每一个结点需要保存:该结点的编号,即对应顶点表中的数组下标;边的权值(可选),以及指向下一个邻接点的指针。一、结点定义const int MAX = 100;//最大顶点个数typedef char VertexTy.

2021-05-11 17:11:40 134

原创 chapter §17 图的邻接矩阵表示

图(Graph)是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为G(V,E),其中,G指的是一个图,V指的是G中顶点的集合,E指的是G中边的集合。一、图的定义包含边表和顶点表。一维数组反映顶点信息,二维数组反映顶点之间的关系,即边或弧的信息。const int MaxVertexNum = 100;//最大顶点数const int INFINITY = 65535;//表示无穷,即两个点顶点之间不存在边typedef char VertexType;//顶点类型typedef .

2021-05-10 16:53:18 115

原创 chapter §16 哈夫曼树

一、结点的带权路径长度树的根到任意结点的路径长度与该结点上权值的乘积。二、树的带权路径长度树中所有叶子结点的带权路径长度之和。三、哈夫曼树带权路径长度最小的二叉树。四、哈夫曼树的构造假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子

2021-05-04 14:33:15 747

原创 chapter §15 平衡二叉树(AVL树)

由于二叉排序树主要应用于查找,其时间复杂度不超过O(logn),为此,当二叉排序树由于插入操作增长过高时,其查找性能将大大降低,甚至复杂度接近O(n)。所以引入平衡二叉树。AVL树,任意一个结点的左右子树高度之差不超过1。这样就保证了二叉树左右尽可能“平衡”,树的整体高度尽可能小。所以当出现不平衡时,我们需要将其调整至平衡。一、LL型调整假设在某一结点A的左孩子(L)的左子树(L)上插入了新结点,使得A的平衡因子由1增至2,导致以A为根的子树失去平衡,需要一次向右的旋转操作。将A的左孩子B向右.

2021-05-04 13:14:28 147

原创 PAT甲级【 A1059 Prime Factors】

题目描述Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1^k1 * p2^k2 *…*pm^km.输入描述Each input file contains one test case which gives a positive integer N in the range of long int.输出描述

2021-05-04 11:01:14 79

原创 【PAT B1013】数素数

题目描述令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。输入描述输入在一行中给出M和N,其间以空格分隔。输出描述输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输入样例5 27输出样例11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103分析由于题目只说是素数最多不超过104,因此

2021-05-01 19:48:08 126

原创 chapter §14 二叉排序树(BST树)

二叉排序树又称为二叉查找树,其具有如下性质,或者为一棵空树,或者当左子树不空时,左子树结点的值均小于根结点的值;当右子树不空时,右子树结点的值均大于根结点的值。其左右子树又分别为一棵二叉排序树。一、结点定义typedef struct BSTNode { Elemtype data; struct BSTNode *lchild, *rchild;} BSTNode, *BSTree;二、插入操作往一棵BST树中插入一个关键字为key的结点。bool InsertBS.

2021-04-30 21:19:57 287 2

原创 素数(质数)问题

对于求1~n以内的素数问题,可有两种思路,一是枚举1到根号n,如果存在数i的一个因子,则判断非素数。另一种思路是使用埃式筛法,枚举2到n,从2而开始,由2是最小的素数,故依次筛去2的倍数,然后继续筛去下个素数的倍数,下个素数为上一步没被筛去的最小数。直到到达边界n时停止。一、枚举法#include <iostream>#include <cmath>using namespace std;const int MAX = 101;//求1~MAX-1内所有素数int .

2021-04-29 21:24:06 515

Java+Mysql实现药品销售管理系统(可用于其它管理系统)

Java+Mysql实现 IDE:IDEA JDK:1.8 MySQL:8.0 包含数据库文件和源码。 详细描述参见:https://blog.csdn.net/qq_43643944/article/details/114268553 说明:1、请确保JDK和数据库安装正确。 2、数据库管理软件建议使用Navicat,运行前务必先用Navicat运行数据库文件创建对应的表;3、初始数据库为空,使用前请先进行注册;4、数据库连接时请务必修改用户名和密码;5、当图片不显示时请检查image文件夹下的文件是否存在,其次检查文件路径是否正确。

2023-02-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除