自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 问答 (1)
  • 收藏
  • 关注

原创 R更改默认工作目录

找到R语言安装目录下的etc文件夹,里面有一个Rprofile.site文件。编辑文件,在里面加上一句:setwd("路径")注意:将路径中的\都改为/,且路径中不能有中文!setwd("d:/Users/86158/Desktop/graduation project/code")...

2022-03-09 11:08:05 2383 1

原创 栈合集(PAT甲级)

PAT 1051 Pop SequenceGiven a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, …, N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and

2020-10-29 11:20:43 161

原创 并查集合集(PAT甲级)

PAT 1118 Birds in ForestSome scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in the same picture belong to the same tree. You are supposed to help the scientists to count the maximum number of trees in the fore

2020-10-27 11:09:44 189

原创 PAT 1135 Is It A Red-Black Tree

PAT 1135 Is It A Red-Black TreeThere is a kind of balanced binary search tree named red-black tree in the data structure. It has the following 5 properties:(1) Every node is either red or black.(2) The root is black.(3) Every leaf (NULL) is black.(4)

2020-10-24 11:04:24 139

原创 BST合集(PAT甲级)

PAT 1099 Build A Binary Search TreeA 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 contai

2020-10-18 14:58:13 166

原创 笔记(关于c++迭代器)

使用迭代器逆序遍历:vector<int> v;for(vector<int>::reverse_iterator it=v.rbegin();it!=v.rend();it++){ printf("%d ",*it);}map的迭代器不同于其他类型的迭代器,没有提供+运算符,因此对map的迭代器it使用it++等操作会出错,可以用下面的写法代替:map<int,int> m;map<int,int>::iterator it=m.begin(

2020-10-14 20:34:37 110

原创 笔记(关于stl容器)

在map中,查找可以使用map自带的find(key)方法:map<int,int> m;if(m.find(key)==m.end()) cout<<"不存在值为key的键"<<endl; //查找失败else{ map<int,int>::iterator it=m.find(key); //查找成功返回迭代器 cout<<it->first<<" "<<it->second<&

2020-10-14 10:50:46 87

原创 PAT 1145 Hashing - Average Search Time(平方探测法)

PAT 1145 Hashing - Average Search TimeThe task of this problem is simple: insert a sequence of distinct positive integers into a hash table first. Then try to find another sequence of integer keys from the table and output the average search time (the num

2020-10-13 23:41:41 101

原创 螺旋矩阵

常规螺旋矩阵:输入行数m和列数n,从1到m*n生成螺旋矩阵。#include <stdio.h>int main(){ int m,n; scanf("%d%d",&m,&n); int now=1; //当前位置 int u=1,d=m,l=1,r=n; //上、下、左、右四个边界 int i=1,j=1; int matrix[m+1][n+1]={0}; while(now<=m*n){

2020-10-11 13:50:08 519 1

原创 c++ 字符串与数字的互相转化(二)

字符串转数字:sscanf函数(将字符数组转为数字)char s[10]="123";int a;sscanf(s,"%d",&a);printf("%d\n",a); //123char s1[10]="12.3";double b;sscanf(s1,"%lf",&b);printf("%.1lf\n",b); //12.3string str="123";int c;sscanf(str.c_str(),"%d",&c);printf("

2020-10-07 11:21:26 142

原创 关于使用string输入输出导致超时

输入时:先按照字符数组用scanf输入,再用string()转为字符串。char s[maxn];string str;//cin>>str; //可能会超时scanf("%s",s);str=string(s);输出时:使用c_str()方法将字符串转为字符数组,再用printf输出。//cout<<str<<endl; //可能会超时printf("%s\n",str.c_str());例子:PAT 1047 Student Lis

2020-09-28 11:16:36 579

原创 最短路径:Bellman-Ford算法

Dijkstra算法可以很好地解决无负权图的最短路径问题,但要是出现了负权边就会失效,这时应该使用Bellman-Ford算法(BF算法),可以解决单源最短路径问题,也可以处理有负权边的情况。

2020-09-23 22:54:34 512

原创 最短路径:Dijkstra算法

最短路径是图论中经典的问题:给定图G(V,E)和起点S,终点T,求一条从起点到终点的路径,使得这条路径上经过的所有边的边权之和最小。Dijkstra算法可以用来解决单源最短路径问题,即给定图G和顶点S,得到S到达其他每个顶点的最短路径。基本思想是:对图G(V,E)设置一个集合S,用来存放已经访问过的顶点,然后每次从集合V-S(没有被访问的顶点)中选择与起点s最短距离最小的一个顶点u,访问并加入集合S。接着以u为中介点,优化起点s与u能达到的所有顶点v之间的最短距离。上述操作重复n次(n为顶点个数),直到集

2020-09-21 11:58:36 807

原创 c++ 数字转字符串

利用sstream中的stringstream转换(可以是浮点数)#include <stdio.h>#include <string>#include <iostream>#include <sstream>using namespace std;int main(){ int a=1001; string s; stringstream ss; ss<<a; ss>>s;

2020-09-19 11:45:31 1303

原创

1.图的定义图结构是一种非线性的数据结构,由顶点(Vertex)和边(Edge)组成,每条边的两端必须是图的两个顶点(可以是相同的顶点),记号G(V,E)表示图G的顶点集为V,边集为E。图可以分为有向图和无向图。有向图的所有边都有方向;无向图中所有边都是双向的,无向边连接的两个顶点可以互相到达。在一些问题中,可以把无向图当作所有边都是正向和负向的两条有向边组成。顶点的度是指和该顶点相连的边的条数,对于有向图来说,顶点的出边条数称为顶点的出度,入边条数称为入度。顶点和边都可以具有权值,分别叫做点权和边权

2020-09-16 18:06:26 209

原创

1.堆的定义堆是一个可以被看作完全二叉树的数组对象,堆中每个结点的值都不小于或者不大于其左右孩子结点的值。如果父结点的值大于子结点的值,这样的堆称为大顶堆;如果父结点的值小于子结点,则称为小顶堆。2.堆的存储结构由于堆是一颗完全二叉树,可以使用数组存储。编号为x的结点,左子结点为2x,右子结点为2x+1。const int maxn=100;int heap[maxn];3.堆的基本操作(1)建堆...

2020-09-02 15:56:33 156

原创 并查集

1.并查集的定义并查集是一种维护集合的树型数据结构,用于处理一些不相交集合的合并及查询问题(Union、Find、Set),支持以下两种操作:(1)合并:合并两个集合(2)查找:判断两个元素是否在一个集合中并查集通过数组father实现,father[i]表示元素i的父亲结点,父亲结点也是集合内的元素。如果father[i]=i,说明元素i是集合的根结点,一个集合内只存在一个根结点,作为该集合的标识。int father[N];father[1]=1;father[2]=1;father[3

2020-08-30 22:57:20 196

原创 树与二叉树(三)

1.平衡二叉树(AVL树)的定义AVL树是一种自平衡二叉查找树,树中任何结点的两个子树高度之差的绝对值不超过1,也成为高度平衡树,左子树与右子树的高度之差成为该结点的平衡因子。只要能随时保证每个结点平衡因子的绝对值不超过1,AVL的高度就能始终保持O(logn)级别。(1)存储结构struct node{ int data; int height; //当前子树高度 node *lchild; node *rchild;}(2)创建新结点node* newNode(int x)

2020-08-27 10:51:51 209

原创 树与二叉树(二)

1.树的遍历一般意义上的树子结点个数不限,子结点之间没有先后次序。(1)树的静态写法子结点个数无法确定,所以用vector存放所有子结点下标struct node{ int data; vector<int> child;}Node[maxn];创建新结点:int index=0;int newNode(int data){ Node[index].data=data; Node[index].child.clear(); //vector的clear()方法清空

2020-08-19 09:44:30 244

原创 树与二叉树(一)

1.树的定义与性质树是一种数据结构,是由有限结点组成的具有层次关系的集合。每个元素称为一个结点,两个结点之间通过边连接,结点向下延伸出子结点。**没有父结点的结点是根结点(root),每个结点有0个或多个子结点,每个非根结点有且只有一个父结点。**树有以下基本性质:1.树可以没有结点,没有结点称为空树2.树的层次要从根结点算起,根结点是第一层3.结点的子树个数(子结点个数)称为结点的度,一棵树中结点最大的度称为树的度4.树中不存在环,边数一定等于结点数-15.度为0的结点称为叶子结点,当树中只有

2020-08-17 23:34:47 316

原创 链表

1.链表链表是一种常见的数据结构,在物理存储上是非连续非顺序的,数据的逻辑顺序是通过指针连接。链表的结点一般由存储数据元素的数据域和指向下一个结点地址的指针域构成。struct node{ typename data; node *next;}链表可以分为带头结点的链表和不带头结点的链表,这里讲的是带头结点的链表。头结点一般称为head,数据域无内容,指针域指向第一个结点。最后一个结点的指针指向NULL,表示链表的结尾。2.结点内存空间的分配(1)mallocmalloc函数是stdli

2020-07-30 16:47:49 234

原创 队列

1.队列队列作为一种先进先出的数据结构,只允许在队尾插入元素,队首删除元素,是一种特殊的线性表。队列可以分为顺序队列和循环队列,这里讲的都是顺序队列。队首指针front指向队首元素的前一个位置,队尾指针rear指向队尾元素。用数组实现队列时首尾指针都是int型变量,用链表实现队列时是int*类型的指针。2.队列的基本操作以int数组为例,队列中没有元素时front和rear的值都为-1(1)获取队列内元素的个数int size(){ return rear-front;}(2)队列为空b

2020-07-25 00:11:58 266

原创

1.栈栈是一种后进先出的数据结构。向栈中插入新元素称为进栈、入栈、压栈,使新元素成为栈顶元素;从栈中删除一个元素称为出栈、退栈,于其相邻的元素成为栈顶元素。栈顶指针是指向栈顶元素的标记,通常记为TOP,在数组栈中TOP是一个int型变量,而在链表栈中是一个int*类型指针。数组栈中数组下标从0开始,TOP为栈顶元素的下标。2.栈的基本操作以数组栈为例(1)获取栈内元素个数int size(){ return TOP+1;}(2)是否为空TOP=-1表示栈内没有元素bool empty(

2020-07-24 10:24:53 273

原创 C++标准模板库(STL):algorithm头文件常用函数

algorithm是stl中最重要的头文件之一,其中定义了多种算法可供使用者直接调用。#include <algorithm>using namespace std;1.max()、min()分别返回两个数的最大值和最小值,参数可以是整数、浮点数,但必须是2个参数。2.abs()返回一个数的绝对值,参数必须是整数。3.swap()swap(x,y)可以交换x和y的值4.next_permutation()给出一个序列在全排列中的下一个序列int a[10]={1,2,3}

2020-07-23 17:17:20 473

原创 C++标准模板库(STL):map和pair

map是STL中的一种关联容器,可以将任何基本类型映射到任何基本类型(包括STL容器),映射前的类型称为key(键),映射后的类型称为value(值)。map可以自动建立键值对的对应,并且会以键从小到大的顺序自动排序。1.map基本用法(1)头文件#include <map>using namespace std;(2)定义不同于其他stl容器,map在定义时需要确定键typename1和值typename2,已完成typename1到typename2的映射,typename可以

2020-07-22 10:46:52 513

原创 C++标准模板库(STL):string

string是STL中的字符串类模板,对字符串常用的一些功能进行了封装,相比字符数组使用更加方便。1.string基本用法(1)头文件#include <string>using namespace std;(2)定义string str1;string str2="dog";(3)输入输出string类型只能使用cin和cout输入输出#include <iostream>#include <string>using namespace st

2020-07-17 15:50:41 438

原创 C++标准模板库(STL):vector和set

一、vectorvector(向量)是一种顺序容器,可以理解为变长数组,数组长度可以随着需要自动改变。1.vector的定义要使用vector的功能,首先需要添加头文件。#include <vector>using namespace std;定义:vector<typename> v;typename为数组类型,可以为int、double、char、结构体或者其他STL标准容器等。下面这条代码定义了一个二维vector数组,每一维的数组长度都是可变的。注意:v

2020-07-16 23:14:12 964 1

空空如也

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

TA关注的人

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