E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
PAT-甲级
PAT_
甲级
_1034 Head of a Gang
题目大意:给出若干人之间的通话长度,按照这些通话将他们分成若干个组。现在给定一个犯罪团伙,而该组内点权最大的人视为头目。要求输出犯罪团伙的个数,并且按照头目姓名字典序从小到大的顺序输出每个犯罪团伙的头目姓名和成员个数。算法思路:这道题的题意得先理解清楚,Ineachgang,theonewithmaximumtotalweightisthehead.这句话的意思是$maximum$$total$$
乔梓鑫
·
2020-11-20 10:23
算法-数据结构
c++
dfs
图
PAT_
甲级
_1076 Forwards on Weibo
题目大意:在微博中,每个用户都可能被若干其他用户关注。而当该用户发布一条消息时,关注他的人就可以看到这条信息并且选择是否转发它,且转发的消息也可以被关注他的人再次转发,但是同一用户最多转发该信息一次(信息的最初发布者不能转发该消息),现在给出N个用户的关注情况以及一个转发层数上限L,并给出最初发布消息的用户编号,求在转发层数上限内消息最多会被多少用户转发算法思路:首先得理解题意assumingth
乔梓鑫
·
2020-11-19 17:28
算法-数据结构
c++
bfs
图
PAT_
甲级
_1021 Deepest Root
题目大意:给出N个节点和N-1条边,问它们是否可以形成一颗树,如果能选择输的深度最大的根节点,输出所有满足该条件的根节点,如果不是一颗树输出Error:Kcomponents,其中K是连通分量的个数.算法思路:首先注意到,该题的图有不连通,所以必须得先判断当前图是否连通,具体做法就是使用$DFS$常规遍历一遍该图,获得连通分量的个数connected_component_count,如果不为1,直
乔梓鑫
·
2020-11-19 11:34
算法-数据结构
c++
图
dfs
PAT_
甲级
_1013 Battle Over Cities
题目大意:给定N座城市,其中有M条边是相连的,如果有其中一个城市被敌人占领的话,求出需要连接多少条边让剩下的城市连通.算法思路:该城市的数据结构很显然是一个图的结构,那么我们如果将一个顶点去除后,剩下来的顶点会组成若干个连通分量,那么要让这剩下来的结点全部连接起来变成一个图,那么就等价于将若干个连通分量连接成一个连通分量,我们知道2个连通分量只需要在这2个连通分量分别取出一个顶点然后相连就变成了一
乔梓鑫
·
2020-11-19 11:59
算法-数据结构
图
c++
dfs
PAT_
甲级
_1098 Insertion or Heap Sort
题目大意:给定一个待排序序列和排序若干次的序列,要求判断是得到目标序列是通过插入排序还是堆排序,然后在输出再排序一次后的序列即可。算法思路:这里考察的就是插入排序和堆排序的完整排序的过程,按部就班的来就好。插入排序:首先将序列划分为有序序列部分和无序序列部分,初始有序序列为序列中第一个元素,对于长度为N的序列,插入排序会经过N-1趟排序,完成将N-1个无序序列的元素依次插入到有序序列之中,那么可以
乔梓鑫
·
2020-11-18 11:35
算法-数据结构
插入排序
堆排序
c++
PAT_
甲级
_1098 Insertion or Heap Sort
题目大意:给定一个待排序序列和排序若干次的序列,要求判断是得到目标序列是通过插入排序还是堆排序,然后在输出再排序一次后的序列即可。算法思路:这里考察的就是插入排序和堆排序的完整排序的过程,按部就班的来就好。插入排序:首先将序列划分为有序序列部分和无序序列部分,初始有序序列为序列中第一个元素,对于长度为N的序列,插入排序会经过N-1趟排序,完成将N-1个无序序列的元素依次插入到有序序列之中,那么可以
乔梓鑫
·
2020-11-18 11:35
算法-数据结构
插入排序
堆排序
c++
PAT_
甲级
_1107 Social Clusters
题目大意:有N个人,如果任意2个人的爱好有相同的(就是有交集),那么这2个人就是属于同一个社交网络,要求输出这N个人组成了几个社交网络,并且输出每个社交网络的人数算法思路:此题考察的是并查集的使用(并查集主要用来处理若干个节点,有些节点互相相连,有些节点没有连接,如何判断其中两个节点是否相连这样的问题),目前来看,使用并查集求解此题应该是最好的选择,可以使用构建人与人的关系图,然后遍历有多少个连通
乔梓鑫
·
2020-11-17 23:28
算法-数据结构
并查集
c++
PAT_
甲级
_1107 Social Clusters
题目大意:有N个人,如果任意2个人的爱好有相同的(就是有交集),那么这2个人就是属于同一个社交网络,要求输出这N个人组成了几个社交网络,并且输出每个社交网络的人数算法思路:此题考察的是并查集的使用(并查集主要用来处理若干个节点,有些节点互相相连,有些节点没有连接,如何判断其中两个节点是否相连这样的问题),目前来看,使用并查集求解此题应该是最好的选择,可以使用构建人与人的关系图,然后遍历有多少个连通
乔梓鑫
·
2020-11-17 18:08
算法-数据结构
并查集
c++
PAT_
甲级
_1099 Build A Binary Search Tree
题目大意:给定一颗二叉查找树的结构和一些待插入数字,要求输出该二叉树的层序遍历序列算法思路:道题和1064的思路是一样的,都是紧紧把握一条,就是利用给定的二叉树的信息获得中序遍历的结点的下标序列,对给定的待插入数字进行排序得到中序遍历的结点的数字序列,然后两者一一对应就可以将该二叉查找树构造出来。这里由于输入的是结点的编号,那么用二叉树的静态存储方法比较方便,使用in数组保存结点中序遍历的编号序列
乔梓鑫
·
2020-11-17 00:55
算法-数据结构
c++
二叉树
PAT_
甲级
_1064 Complete Binary Search Tree
题目大意:给定N个结点的CBT的每一个结点的值,要求输出对应的层序遍历序列算法思路:首先明确CBT的概念,这里要求每一次尽可能的满,除了最后一层,这里的定义符合完全二叉树,那么我们可以对这颗完全二叉树按照层次遍历序列进行编号,这样便于输出层序遍历序列(可能现在还不明白,看到后面就好了),为了方便轻松获得左孩子和右孩子我们使用1来代表根节点的编号.然后对于给定结点数量N的完全二叉树,其层次序列的编号
乔梓鑫
·
2020-11-17 00:55
算法-数据结构
c++
二叉排序树
完全二叉树
PAT_
甲级
_1066 Root of AVL Tree
题目大意:给定N个结点,要求根据这N个结点构建AVL树,然后输出根节点的权值。算法思路:此题主要考察的就是AVL的建树过程,AVL树的构建过程本质和二叉搜索树完全一致,只不过在其基础上添加了平衡因子,需要对不平衡的情况进行左旋和右旋,所以得计算结点的平衡因子,又由于平衡因子的计算依赖左子树和右子树的高度,所以得在结点中新增高度height属性和获取结点高度的函数getHeight,这样就可以使用g
乔梓鑫
·
2020-11-17 00:50
算法-数据结构
平衡树
c++
PAT_
甲级
_1066 Root of AVL Tree
题目大意:给定N个结点,要求根据这N个结点构建AVL树,然后输出根节点的权值。算法思路:此题主要考察的就是AVL的建树过程,AVL树的构建过程本质和二叉搜索树完全一致,只不过在其基础上添加了平衡因子,需要对不平衡的情况进行左旋和右旋,所以得计算结点的平衡因子,又由于平衡因子的计算依赖左子树和右子树的高度,所以得在结点中新增高度height属性和获取结点高度的函数getHeight,这样就可以使用g
乔梓鑫
·
2020-11-16 13:49
算法-数据结构
平衡树
c++
PAT
甲级
1005 Spell It Right (20分)
题目Givenanon-negativeintegerN,yourtaskistocomputethesumofallthedigitsofN,andoutputeverydigitofthesuminEnglish.InputSpecification:Eachinputfilecontainsonetestcase.EachcaseoccupiesonelinewhichcontainsanN
hhcccaptain
·
2020-11-16 12:57
PAT-Advanced
c++
PAT
甲级
题目分类整理(更新ing)
我的PAT之路大三菜鸡题型分类类型题号字符串处理1001字符串处理1005大数模拟1023
hhcccaptain
·
2020-11-16 11:31
PAT-Advanced
c++
PAT
甲级
1001 A+B Format (20分)
题目Calculatea+bandoutputthesuminstandardformat–thatis,thedigitsmustbeseparatedintogroupsofthreebycommas(unlesstherearelessthanfourdigits).InputSpecification:Eachinputfilecontainsonetestcase.Eachcasecon
hhcccaptain
·
2020-11-16 11:46
PAT-Advanced
c++
PAT_
甲级
_1064 Complete Binary Search Tree
题目大意:给定N个结点的CBT的每一个结点的值,要求输出对应的层序遍历序列算法思路:首先明确CBT的概念,这里要求每一次尽可能的满,除了最后一层,这里的定义符合完全二叉树,那么我们可以对这颗完全二叉树按照层次遍历序列进行编号,这样便于输出层序遍历序列(可能现在还不明白,看到后面就好了),为了方便轻松获得左孩子和右孩子我们使用1来代表根节点的编号.然后对于给定结点数量N的完全二叉树,其层次序列的编号
乔梓鑫
·
2020-11-15 20:13
算法-数据结构
c++
二叉排序树
完全二叉树
PAT_
甲级
_1099 Build A Binary Search Tree
题目大意:给定一颗二叉查找树的结构和一些待插入数字,要求输出该二叉树的层序遍历序列算法思路:道题和1064的思路是一样的,都是紧紧把握一条,就是利用给定的二叉树的信息获得中序遍历的结点的下标序列,对给定的待插入数字进行排序得到中序遍历的结点的数字序列,然后两者一一对应就可以将该二叉查找树构造出来。这里由于输入的是结点的编号,那么用二叉树的静态存储方法比较方便,使用in数组保存结点中序遍历的编号序列
乔梓鑫
·
2020-11-15 20:13
算法-数据结构
c++
二叉树
PAT_
甲级
_1043 Is It a Binary Search Tree
题目大意:现给定一颗N个结点的树,判断该树是否是二叉查找树或者镜像二叉查找树,如果是输出YES并输出该树的后序遍历,否则输出NO算法思路:我们首先通过给定的N个结点直接构建一个二叉查找树,然后再获得其先序遍历序列和镜像先序遍历序列,分别判断是否和输入的序列相等,如果输入的序列是先序遍历序列,那么就输出YES并获得其后序遍历序列进行输出,如果输入序列是镜像先序遍历序列,那么就输出YES并获得镜像后序
乔梓鑫
·
2020-11-15 14:35
算法-数据结构
c++
PAT_
甲级
_1043 Is It a Binary Search Tree
题目大意:现给定一颗N个结点的树,判断该树是否是二叉查找树或者镜像二叉查找树,如果是输出YES并输出该树的后序遍历,否则输出NO算法思路:我们首先通过给定的N个结点直接构建一个二叉查找树,然后再获得其先序遍历序列和镜像先序遍历序列,分别判断是否和输入的序列相等,如果输入的序列是先序遍历序列,那么就输出YES并获得其后序遍历序列进行输出,如果输入序列是镜像先序遍历序列,那么就输出YES并获得镜像后序
乔梓鑫
·
2020-11-15 14:25
算法-数据结构
c++
PAT_
甲级
_1085 Perfect Sequence
题目大意:从N个正整数中选择若干个数,使得选出的这些数中的最大值不超过最小值的p倍。问满足条件的选择方案中,序列最长的长度是多少。算法思路:从N个正整数中选择若干个数字组成一个序列,最大值为M,最小值为m,那么该序列中的数字,也就是从m到M的数字一定是原序列中的连续序列,因为不然就会存在一个数字大于m小于M不在选择的序列中,然后将其加入到该序列使其长度变大并且符合题意,那么原来选出的序列就不是最长
乔梓鑫
·
2020-11-14 22:12
算法-数据结构
c++
PAT_
甲级
_1053 Path of Equal Weight
题目大意:给定一颗树和每个结点的权值,求从所有根结点到叶子结点的路径,使得每条路径上的权值之和等于给定的常数S.如果有多条路径,按照路径的非递增序列输出算法思路:考察树的遍历,由于需要求从所有根结点到叶子结点的路径,很自然就想到使用先序遍历该树,并且使用$path$保存当前搜索路径,$result$保存所有符合条件的路径,如果当前结点是叶子结点,那么就先将此结点添加到$path$中,然后再计算$p
乔梓鑫
·
2020-11-14 17:47
算法-数据结构
c++
PAT_
甲级
_1004 Counting Leaves
题目大意:给定一颗树,要求求出每一层叶子结点的数目算法思路:直接遍历这颗树,在遇到叶子节点的时候,就统计当前层次下的叶子节点的个数,这里使用num_leaves_per_level保存每一层叶子节点的数目。遍历结束后,直接输出num_leaves_per_level数组即可。层序遍历代码如下:intnum_leaves_per_level[101];//每一层叶子节点的数目intlayer=-1;
乔梓鑫
·
2020-11-14 17:12
算法-数据结构
c++
PAT_
甲级
_1106 Lowest Price in Supply Chain
题目大意:给出一颗销售供应树,根结点为0,在树根处售价为P,然后从根节点开始每往子节点走一层就,该层的货物的价格就会在上一层的价格上增加r%,要求获得叶子结点最低售价以及最低售价的个数。算法思路:此题本质上考察的是树的遍历,该树是由供应商作为根节点,经销商作为子节点,零售商作为叶子节点组成。想要求叶子节点的最低售价及其个数,只需要求出叶子节点的售价,为此,我们只需要从根节点遍历该树,计算所有节点的
乔梓鑫
·
2020-11-14 17:12
算法-数据结构
c++
PAT_
甲级
_1094 The Largest Generation
题目大意:输入树结点的个数N,非叶结点个数M,然后输入M个非叶节点的孩子结点,求结点个数最多的那层,输出该层的结点个数和层号.算法思路:此题也是考察树的遍历,可以使用先序遍历或者层序遍历建立每一层和节点个数的关系,这里采用了层序遍历,直接在出队节点的时候就先更新当前层的节点个数,然后更新最多节点数目和层数。对应代码如下:intlargestGeneration=-1;//最多节点数目intlarg
乔梓鑫
·
2020-11-14 17:11
算法-数据结构
c++
PAT_
甲级
_1053 Path of Equal Weight
题目大意:给定一颗树和每个结点的权值,求从所有根结点到叶子结点的路径,使得每条路径上的权值之和等于给定的常数S.如果有多条路径,按照路径的非递增序列输出算法思路:考察树的遍历,由于需要求从所有根结点到叶子结点的路径,很自然就想到使用先序遍历该树,并且使用$path$保存当前搜索路径,$result$保存所有符合条件的路径,如果当前结点是叶子结点,那么就先将此结点添加到$path$中,然后再计算$p
乔梓鑫
·
2020-11-14 16:42
算法-数据结构
c++
PAT_
甲级
_1004 Counting Leaves
题目大意:给定一颗树,要求求出每一层叶子结点的数目算法思路:直接遍历这颗树,在遇到叶子节点的时候,就统计当前层次下的叶子节点的个数,这里使用num_leaves_per_level保存每一层叶子节点的数目。遍历结束后,直接输出num_leaves_per_level数组即可。层序遍历代码如下:intnum_leaves_per_level[101];//每一层叶子节点的数目intlayer=-1;
乔梓鑫
·
2020-11-13 18:07
算法-数据结构
c++
PAT_
甲级
_1106 Lowest Price in Supply Chain
题目大意:给出一颗销售供应树,根结点为0,在树根处售价为P,然后从根节点开始每往子节点走一层就,该层的货物的价格就会在上一层的价格上增加r%,要求获得叶子结点最低售价以及最低售价的个数。算法思路:此题本质上考察的是树的遍历,该树是由供应商作为根节点,经销商作为子节点,零售商作为叶子节点组成。想要求叶子节点的最低售价及其个数,只需要求出叶子节点的售价,为此,我们只需要从根节点遍历该树,计算所有节点的
乔梓鑫
·
2020-11-13 17:33
算法-数据结构
c++
PAT_
甲级
_1094 The Largest Generation
题目大意:输入树结点的个数N,非叶结点个数M,然后输入M个非叶节点的孩子结点,求结点个数最多的那层,输出该层的结点个数和层号.算法思路:此题也是考察树的遍历,可以使用先序遍历或者层序遍历建立每一层和节点个数的关系,这里采用了层序遍历,直接在出队节点的时候就先更新当前层的节点个数,然后更新最多节点数目和层数。对应代码如下:intlargestGeneration=-1;//最多节点数目intlarg
乔梓鑫
·
2020-11-13 17:59
算法-数据结构
c++
PAT_
甲级
_1090 Highest Price in Supply Chain
题目大意:给出一颗销售供应树,根结点为0,在树根处售价为P,然后从根节点开始,每一层的货物的价格就会在上一层的价格上增加r%,要求输出售价最高的零售商和其个数。算法思路:此题和1079是一样的题目,采用树的遍历(先序遍历或者层序遍历)获取所有节点的售价,在遍历到叶子节点的时候就更新最高售价和对应的零售商的个数。由于给的是当前结点和其父亲的关系,所以每次输入parent的时候,就将其孩子结点添加其中
乔梓鑫
·
2020-11-13 12:33
算法-数据结构
c++
PAT_
甲级
_1090 Highest Price in Supply Chain
题目大意:给出一颗销售供应树,根结点为0,在树根处售价为P,然后从根节点开始,每一层的货物的价格就会在上一层的价格上增加r%,要求输出售价最高的零售商和其个数。算法思路:此题和1079是一样的题目,采用树的遍历(先序遍历或者层序遍历)获取所有节点的售价,在遍历到叶子节点的时候就更新最高售价和对应的零售商的个数。由于给的是当前结点和其父亲的关系,所以每次输入parent的时候,就将其孩子结点添加其中
乔梓鑫
·
2020-11-13 12:33
算法-数据结构
c++
PAT_
甲级
_1079 Total Sales of Supply Chain
题目大意:给出一颗销售供应树,根结点为0,在树根处售价为P,然后从根节点开始,每一层的货物的价格就会在上一层的价格上增加r%,给出每个叶结点的货物量,要求计算所有叶结点的销售总额。算法思路:此题本质上考察的是树的遍历,该树是由供应商作为根节点,经销商作为子节点,零售商作为叶子节点组成。想要求叶子节点的销售总额,只需要求出叶子节点的售价,为此,我们只需要从根节点遍历该树,计算所有节点的售价,这样在遍
乔梓鑫
·
2020-11-13 12:27
算法-数据结构
dfs
c++
PAT_
甲级
_1102 Invert a Binary Tree
题目大意:给定一个二叉树(编号从0到N-1),和每个结点的左右孩子编号,把该二叉树进行反转,然后输出反转二叉树的层序遍历和中序遍历算法思路:这个题目有两种方法可以求解,一是按照题目要求直接将二叉树进行反转获得新的二叉树,然后再遍历。第二种就是不改变二叉树,作镜像遍历,也即是之前先遍历左孩子,现在变成先遍历右孩子,毕竟只需要输出遍历的结果,就无需进行二叉树的反转,这里选择用第二种,当然了,如果想要反
乔梓鑫
·
2020-11-13 11:48
算法-数据结构
二叉树
c++
PAT_
甲级
_1086 Tree Traversals Again
题目大意:用栈来模拟一颗二叉树的先序和中序遍历过程,求这课树的后序遍历序列。算法思路:首先得说一个结论,就是栈的入栈序列就是一颗二叉树的先序遍历,出栈序列就是一颗二叉树的中序遍历序列,那么这个题目就转化为根据先序和中序求后序遍历序列。那么首先就是根据先序和中序建立二叉树,然后根据这个二叉树进行后序遍历获得后序遍历序列。递归建立二叉树假设递归过程中某步的前序区间是$[beginPre,lastPre
乔梓鑫
·
2020-11-13 11:11
算法-数据结构
二叉树
c++
PAT_
甲级
_1086 Tree Traversals Again
题目大意:用栈来模拟一颗二叉树的先序和中序遍历过程,求这课树的后序遍历序列。算法思路:首先得说一个结论,就是栈的入栈序列就是一颗二叉树的先序遍历,出栈序列就是一颗二叉树的中序遍历序列,那么这个题目就转化为根据先序和中序求后序遍历序列。那么首先就是根据先序和中序建立二叉树,然后根据这个二叉树进行后序遍历获得后序遍历序列。递归建立二叉树假设递归过程中某步的前序区间是$[beginPre,lastPre
乔梓鑫
·
2020-11-13 11:11
算法-数据结构
二叉树
c++
PAT_
甲级
_1020 Tree Traversals
题目大意:给定一个二叉树的后序遍历和中序遍历,要求输出层序遍历算法思路:首先由后序遍历和中序遍历构建此二叉树,然后层序遍历二叉树.构建二叉树的思路:使用递归建立二叉树,假设递归过程中某步的后序区间是$[beginPost,lastPost]$,中序区间是$[beginIn,lastIn]$,那么根节点为$post[lastPost]$,首先初始化根节点$root$,接着需要在中序遍历中找到根节点的
乔梓鑫
·
2020-11-13 11:06
算法-数据结构
二叉树
c++
PAT_
甲级
_1020 Tree Traversals
题目大意:给定一个二叉树的后序遍历和中序遍历,要求输出层序遍历算法思路:首先由后序遍历和中序遍历构建此二叉树,然后层序遍历二叉树.构建二叉树的思路:使用递归建立二叉树,假设递归过程中某步的后序区间是$[beginPost,lastPost]$,中序区间是$[beginIn,lastIn]$,那么根节点为$post[lastPost]$,首先初始化根节点$root$,接着需要在中序遍历中找到根节点的
乔梓鑫
·
2020-11-13 11:05
算法-数据结构
二叉树
c++
PAT_
甲级
_1091 Acute Stroke
题目大意:给定一个三维数组,数组元素的取值为0或者1,与某一元素相邻的元素是上下左右前后6个方向的元素,如果有若干个1相邻,那么就称这些1所组成的区域为一个块,如果块中1的个数不低于T个,那就称这个块为strokecore,现在要求计算所有strokecore的1个累计个数.算法思路:这里的块实际上和我们常见的图里面的连通分量的概念很相似,首先想到的就是遍历这个3维矩阵的每一个连通块,然后计算合法
乔梓鑫
·
2020-11-13 11:34
算法-数据结构
c++
PAT_
甲级
_1091 Acute Stroke
题目大意:给定一个三维数组,数组元素的取值为0或者1,与某一元素相邻的元素是上下左右前后6个方向的元素,如果有若干个1相邻,那么就称这些1所组成的区域为一个块,如果块中1的个数不低于T个,那就称这个块为strokecore,现在要求计算所有strokecore的1个累计个数.算法思路:这里的块实际上和我们常见的图里面的连通分量的概念很相似,首先想到的就是遍历这个3维矩阵的每一个连通块,然后计算合法
乔梓鑫
·
2020-11-13 11:33
算法-数据结构
c++
PAT_
甲级
_1103 Integer Factorization
题目大意:给定正整数N,K,P,将N表示为K个正整数的P次方和(递减排序),如果有多个选择底数和最大的方案,如果还有多个,选择底数序列字典序最大的序列算法思路:题目的思路倒是不难,常规遍历都可以想得到,但是设计到的技巧还有些,最容易想到的就是从1开始遍历数字,累加当前遍历数字的P次方和,找到相等于N的即可那么在遍历数字的时候会出现选择该数或不选择该数的情,并且可以重复选择同一个数字,很自然就想到深
乔梓鑫
·
2020-11-13 11:52
算法-数据结构
c++
PAT_
甲级
_1097 Deduplication on a Linked List
题目大意:给定一条单链表,要求分解为两条链表,第一条是去除绝对值重复数值结点的链表,第二条是去除的结点组成的链表算法思路:首先使用node存储所有输入的节点,removed存储需要删除的节点。由于需要判断node中的节点是否需要删除,我们使用isExist表示与该节点数据的绝对值相同的节点是否存在,使用work_n保存当前指向在node的哪个节点,初始为begin_address,只要isExis
乔梓鑫
·
2020-11-13 11:31
算法-数据结构
c++
PAT_
甲级
_1052 Linked List Sorting
题目大意:给定N个结点起始地址为$begin$_$address$的单链表,要求根据data进行排序,然后输出链表算法思路:我们首先用$node$数组存储所有输入的结点,在输入的时候使用$dataToAddress$记录数据到地址的映射(数据和地址是绑定的,无论怎么样都不会变化),由于对于输入可能会有不在链表上的结点,所以使用$isExist$记录所有输入的节点,这样就可以判断起始节点是否存在输入
乔梓鑫
·
2020-11-13 11:30
算法-数据结构
c++
PAT_
甲级
_1060 Are They Equal
题目大意:给定两个位数不超过100的非负浮点数,如果保留n位有效数字的情况下写成0.@@@@*10^@的形式,如果两者相同,则输出YES和该数字,如果不同输出NO并且分别输出2个数。算法思路:仔细思考下,这种形式和科学技术法很相似但是有不同于科学计数法,因为前面一定得是0.开头,那么输入的数字的形式按照道理来说只有一种,那就是$abcd.efg$,但是在这里仔细分成2类,一类就是$0.efg$的形
乔梓鑫
·
2020-11-13 11:17
算法-数据结构
c++
PAT_
甲级
_1069 The Black Hole of Numbers
题目大意:给定任意一个各位数字不完全相同的四位正整数,如果先把四个数字按非递增排序,再按非递减排序,然后用第一个数字减第二个数字,将得到一个新的数字。重复这一操作,很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。算法思路:此题直接按照题目的描述进行模拟就好,这里采用do...while循环的结果比较方便处理输入为0或者6174的情况,在循环体中,我们首先将数字N转化
乔梓鑫
·
2020-11-13 11:17
算法-数据结构
c++
PAT_
甲级
_1041 Be Unique
题目大意:给定N个数,按照读入的顺序,输出第一个只出现了一次的数,如果没有输出None算法思路:此题主要使用hash的思想,将出现的数字作为下标,出现的次数作为值,然后一一对应,在输入的时候,使用num数组接受所有的值,count数组保存所有值所出现的次数,因为最大数字为10000,所以count数组得开10001以上,然后使用j指针遍历数组num,如果count[num[j]]==1,说明按照读
乔梓鑫
·
2020-11-13 11:17
算法-数据结构
c++
PAT_
甲级
_1002 A+B for Polynomials
题目大意:给出两行,每行表示一个多项式:第一个数表示该多项式中系数非零项的项数,后面每两个数表示一项,这两个数分别表示该项的幂次和系数。试求两个多项式的和,并以与前面相同的格式输出结果。算法思路:我们在输入A和B的时候使用result保存A加B,让result的下标对应指数,其值为系数,然后输入A的时候暂存A,然后输入B的时候,直接对应下标相加即可。然后第一次遍历result统计不为0的项数num
乔梓鑫
·
2020-11-13 10:44
算法-数据结构
c++
PAT_
甲级
_1035 Password
题目要求:给定n个人的用户名和密码,按照要求替换密码中的特定字符(1(one)by@,0(zero)by%,lbyL,andObyo),如果不存在需要修改的密码,则需要根据单复数输出Thereis(are)1(n)account(s)andnoaccountismodified算法思路:在输入密码的时候就遍历该密码的每一个字符,使用flag标记该密码是否需要修改,如果修改过就使用vectormod
乔梓鑫
·
2020-11-13 10:44
算法-数据结构
c++
PAT_
甲级
_1065 A+B and C (64bit)
题目大意:给出三个整数A,B,C,如果A+B>C就输出true,否则输出false;算法思路:注意到题目给定的数据范围,对于A,B,C都只能使用longlong类型存储,其范围为[-2^63,2^63),而此题考察的是溢出问题。对于正溢出:也就是A+B>=2^63时,由于longlong最大为2^63-1,那么A+B最大为2^64-2,对2^64(longlong表示的数据范围长度)取余得到-2,
乔梓鑫
·
2020-11-13 10:44
算法-数据结构
c++
PAT_
甲级
_1079 Total Sales of Supply Chain
题目大意:给出一颗销售供应树,根结点为0,在树根处售价为P,然后从根节点开始,每一层的货物的价格就会在上一层的价格上增加r%,给出每个叶结点的货物量,要求计算所有叶结点的销售总额。算法思路:此题本质上考察的是树的遍历,该树是由供应商作为根节点,经销商作为子节点,零售商作为叶子节点组成。想要求叶子节点的销售总额,只需要求出叶子节点的售价,为此,我们只需要从根节点遍历该树,计算所有节点的售价,这样在遍
乔梓鑫
·
2020-11-13 10:40
算法-数据结构
dfs
c++
PAT_
甲级
_1102 Invert a Binary Tree
题目大意:给定一个二叉树(编号从0到N-1),和每个结点的左右孩子编号,把该二叉树进行反转,然后输出反转二叉树的层序遍历和中序遍历算法思路:这个题目有两种方法可以求解,一是按照题目要求直接将二叉树进行反转获得新的二叉树,然后再遍历。第二种就是不改变二叉树,作镜像遍历,也即是之前先遍历左孩子,现在变成先遍历右孩子,毕竟只需要输出遍历的结果,就无需进行二叉树的反转,这里选择用第二种,当然了,如果想要反
乔梓鑫
·
2020-11-13 10:02
算法-数据结构
二叉树
c++
PAT
甲级
1082 Read Number in Chinese
说真的这道题按照算法笔记上写应该会比较简单,能完美避免末尾0的问题。但是我就是头铁,就是要从头到尾的进行处理,事实证明难是不难,就是要考虑的内容太多#include#include#include#include#includeusingnamespacestd;intmain(){intstart=0;boolistotoal=true;charw[][11]={"Yi","Qian","Bai
Skittle丶
·
2020-10-29 19:56
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他