自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 PAT A1131 Subway Map

这道题是图论的题目,一开始看到最短距离马上想到要用SPFA+DFS的框架来写,但因为各结点之间的距离是1,即没有另外的其他边权值,所以又想到用BFS来求最短路径,但由于BFS用来求最短路径的值可以但如果要存储路线的话就比较困难,最后用了DFS来做,还挺好写的。我的思路是,在DFS这个函数里,有四个参数,分别是s,t,level,pre_line,分别代表当前结点,终点,当前所经过的结点个数和上一个结点到当前结点所在的线路。如果当前结点就是终点,则通过对比最小经过结点数和最小中转数来存放路径,否则遍历当前

2021-02-26 14:32:50 110

原创 PAT A1103 Integer Factorization

1103 Integer FactorizationPAT甲级中涉及DFS的题目有几个注意点:1.该抽象的函数就抽象出来处理,比如这道题目里的pow函数2.在回溯算法里深度遍历函数中,最好不要涉及太多参数的传递,无论是否使用引用,因为会非常的耗时导致超时。最好的解决方法是,将所有涉及到的vector全都设置为全局变量。本人亲测,如果在DFS函数的参数列表中包含了vector会有至少一组超时。3.DFS的写法也有一些讲究,我自己写过两种DFS函数。函数一:void DFS(int index, i

2021-01-28 11:05:47 161

原创 PAT A1074 反转链表

思路:1.依照题目要求,创建两个数组,一个用来存放原始的结点,另一个用来存放有效的结点2.从头结点开始直到遇见尾结点遍历链表,并将遍历到的链表结点依照次序存放在第二个数组中3.在第二个数组中每K个结点进行逆转,若不满K个则跳出循环需要注意的是,PAT甲级的与链表相关的题目,输入中都可能包含无效的结点,即从题目给出的头结点出发无法遍历到的结点,这些结点是不予输出的。#include <cstdio>#include <algorithm>const int maxn =

2021-01-25 12:56:29 133

原创 PAT甲级 1012 The Best Rank

这道题逻辑的实现上其实坑不多,主要分为三部分。声明一个结构数组保存每个学生的成绩,写一个循环录入数据依照晴神的实现还需要一个记录排名的二维数组rank[1000000][4],并写一个循环分四次将A,C,M,E的排名计算并放入rank[][]中,主要复杂度在这一部分,其实也就O(n)的级别。根据给出的query ID来分别给出各个学生的排名和对应科目字符。代码就没必要列出来了,主要是有这么一个小坑,我卡了很久。我自己按照自己的思路写了一遍后,提交后一直出现段错误,和晴神笔记里的代码仔细对比也没

2021-01-11 22:11:50 161

原创 PAT甲级C/C++字符串输入问题

以下总结了一些字符串输入的问题,避免在刷算法题的过程中因为输入的问题而出现答案错误。1.cin对于string类型,遇空格/换行符为结束的标志,但是空格/换行符仍在缓冲区中。2.getline(cin, str)只适用于string类型且面向行输入,遇换行符为结束标志,且丢弃换行符!这意味着,如果从上一行的输入中留下的换行符没有被及时处理掉的话,当getline遇见换行符后,会认为此行的输入已经结束,也就意味着getline(cin,str)中的str没有得到任何的输入。3.scanf(".

2020-12-29 19:19:29 254

原创 C++ 中 memset 的用法

memset是一个存放于 C 库中的函数,在 C++ 中可用cstring·来包含该头文件,函数头为void *memset(void *_Dst, int _Val, size_t _Size),其中_Dst:表示一片连续的内存空间_Val:表示欲往该内存中写入的值_Size:表示的是从该内存起始位置之后的 _Size 大小的字节我们先看一个例子:char name[20] = "Harry Potter";printf("%s\n",name);memset(name, '*', 5)

2020-08-30 12:51:07 504

原创 C++中使用new动态声明二维数组的方式

C++中动态二维数组的声明方式在C/C++中定义动态数组时我们都很熟悉使用的是 new 关键字,基本语法如下:typeName *arrayName = new typeName[arraySize];比如若想通过输入的 n 来创建一个数组大小为 n 的 int 型数组时,可以这样写:cin >> n;int *a = new int[n];通过上面这个语句我们在内存地址中分配了一片 int[n] 大小的内存空间,并将其首地址赋值给了 a ,在这里 a 是 int* 类型的指针变

2020-07-24 22:46:00 5883 3

原创 数据结构——树与二叉树学习笔记(一)

数据结构——树与二叉树,记录了与树相关的重要知识点,可作为查阅使用。文章目录1. 树的基本概念1.1 树的概念术语1.2 树的基本性质2. 二叉树的概念2.1 几个特殊的二叉树2.2 二叉树的性质2.3 二叉树的存储结构3. 二叉树的遍历和线索二叉树3.1 递归遍历3.2 非递归遍历3.3 用遍历序列确定二叉树3.4 线索二叉树的构造3.5 线索二叉树的遍历4. 树、森林4.1 树的存储结构4.2 树、森林与二叉树的转换4.3 树/森林的遍历1. 树的基本概念1.1 树的概念术语结点、根、分支、.

2020-05-23 19:00:24 679

原创 KMP算法背后的细节与难点

本文是笔者在复习数据结构时的笔记,在初次接触KMP算法时觉得理解起来困难重重,在翻阅网上众多自称“通俗易懂地解释KMP算法”的文章后,发现大多文章都只是粗浅地停留在对比KMP和暴力匹配算法的不同,而没有深入地去探讨算法细节中关于next数组的计算和推导、next数组应如何用代码实现等问题。所以笔者在花费大量时间思考并最终理解后,希望通过这篇文章讲清和讲透KMP算法其中的细节。在进入正题之前,让...

2020-04-28 11:40:27 1253 2

原创 MXNet中take函数的用法

这里先上一段官方文档中关于mxnet.ndarray.take()的定义:主要用到一般就只有前三个参数,所以这里只列出了前三个参数的使用方法。mxnet.nd.take(a = None, indices = None, axis = _Null, mode = _Null, out = None, name = None, **kwargs)a必须是一个ndarray类型,a通常不...

2020-03-06 19:36:21 1287 1

空空如也

空空如也

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

TA关注的人

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