- 博客(31)
- 收藏
- 关注
原创 dijkstra——求单源最短路径
从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。vector<edge> g[inf_N]是一个数组,其中每一个元素都是vector<edge>类型。4.4遍历从结点开始的边,如果能更新到源点的最短距离,则更新,并将其push进pq中。4.1取出pq的顶部,代表取出到源点距离最近的结点。2.设置所有结点到源节点的距离为无穷大,源节点到自己的距离为0。5.跳出while循环,输出每个结点到源点的距离。输入一个有权图,找所有点到原点的最短距离。
2025-04-08 14:39:41
231
原创 最长上升子序列LIS——动态规划&贪心+二分
输入一个数字序列,输出最长上升子序列LIS(Longest Increasing Subsequence)的长度。
2025-04-07 11:17:10
185
原创 c++学习笔记——按位与
若下午气温超过30℃,则他必去游泳。若他去游泳,他就不去看电影了。所以,若他没去看电影,下午气温必超过了30℃。对以下推理,请编程判断推理是否有效。禁止采用手工演算得出结论,再用输出语句输出yes或no。有多个命题的场景,由于每个命题都有T和F两种状态,使用多个。如果推理有效,输出yes,否则输出no。
2025-02-17 20:54:27
137
原创 c++学习笔记——数字出现次数排序
vector vec(mp.begin(), mp.end())和for (pair p : vec)的用法。
2024-12-06 22:24:05
212
原创 c++学习笔记——char和int类型数字的转化
1~9,char类型的数字c,转换为int类型的数字,-'0',反之+'0',原理是acsii码。
2024-12-06 20:29:59
198
原创 c++学习笔记——sort()和pair
pair在库<utility>中,当对一个pair<int,int>类型的数组arr使用sort(arr, arr + n, less<pair<int, int>>())时,会首先比较pair的第一个元素,如果相同,则比较pair的第二个元素。如果想让第一个元素按照less比较,如果相同,第二个元素按照greater比较,则需要自定义比较函数。
2024-12-05 16:44:03
239
原创 c++学习笔记——图像旋转
题目描述:代码实现:#include<iostream>using namespace std;int arr[1010][1010];int main() { int n, m; cin >> n >> m; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> arr[i][j]; } } for (int j =
2024-12-04 15:04:08
266
原创 c++学习笔记——sort()
sort()中三个参数,分别是数组头指针、数组尾指针、比较函数。比较函数为greater<T>()为降序排序,比较函数为less<T>()为升序排序。
2024-12-04 13:07:05
200
原创 c++学习笔记——最高频字符串,字典,map
注意:字典可以是map或unordered_map,而是哈希表是unordered_map,map保持键的有序性,而unordered_map不保持键的有序性。
2024-12-02 00:10:56
116
原创 c++ 线性表——数组描述
线性表(linear list)(也称有序表ordered list):每一个实例都是元素的一个有序集合,形式为(e0,e1,e2,......,en-1),ei是线性表的元素,i是元素ei的索引,n是线性表的长度或大小。数据结构(data structure):是一个数据对象,这个对象的实例以及构成实例的元素都存在着联系,而且这些联系由相关的函数决定。c++程序常用的数据描述方法是数组描述和链式描述。数据对象:一组实例或值,如线性表、栈、队列等。#线性表——数组描述#
2023-10-08 15:34:34
127
1
原创 c++ 插入排序
插入排序(insertion sort):首先将第2个元素插入到前1个元素中,再将第3个元素插入到前2个元素中,以此类推,进行n-1次插入过程后,数组排序完成。一次插入过程:对于具有n个元素的有序数组a[ ],将第n+1个元素插入到数组中,插入时将要插入位置后面的所有元素后移一位。
2023-10-07 17:11:19
84
1
原创 c++ 冒泡排序
冒泡排序(bubble sort):对于有n个元素的数组a[ ],首先对n个元素进行一次冒泡过程,最大的元素移到最右端。然后对于剩下的n-1个元素,进行一次冒泡过程,最大的元素移到最右端。如此进行n-1次冒泡过程,完成数组的排序。一次冒泡过程:在一个数组中,从左至右比较相邻元素,若左元素大于右元素,则进行交换。一次冒泡过程后,数组中最大的元素必定在最右端。可及时终止的实现方法:在每一次冒泡过程中,若没有任何元素发生交换,则说明数组已经完全排序,不需要后续的冒泡过程。
2023-10-07 16:59:08
738
1
原创 c++ 选择排序
选择排序(selection sort):在一个有n个元素的数组中,首先找出最大的元素,将它移到a[n-1](交换),然后在余下的n-1个元素中,找出最大的元素,将它移到a[n-2](交换),如此进行下去,直到剩下一个元素,完成排序。可及时终止的实现方法:在寻找最大元素的过程中,若最大元素位于末尾,则不进行交换。
2023-10-07 16:30:58
280
1
原创 c++ 名次排序
名次:一个元素在一个序列中,所有比它小的元素个数加上在它左边出现的与它相同的元素个数。如数组a=[4,3,9,3,7]是一个序列,各元素的名次为r=[2,0,4,1,3],名次越靠前,元素越小。名次排序:通过计算一个序列中各元素的名次来进行排序。
2023-10-07 16:23:17
418
1
原创 c++中1<<n的用法
在C语言中,1<<n表示对数字1进行左移n位操作。这意味着将二进制数1向左移动n个位置,然后用0填充右侧空出的位。这个操作相当于将1乘以2的n次方。例如,如果n为3,那么1<<3就等于8,因为二进制数1左移3位后变成了1000,对应的十进制数就是8。结论:1<<n = 2^n。
2023-09-20 18:51:09
2055
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人