自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mark姚

计算机小白之白了再白

  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 7-44 基于词频的文件相似度 (30 分)

原题:https://pintia.cn/problem-sets/15/problems/891题意:给出N个文件,文件里面含有各个单词,再给出若干对编号,找出每对编号文件里面共同单词,并且算出它们所占两者总单词数的比例。这个两者总单词数要注意,相同的不用加进去。例如:aaabbb ccc 和aaa ddd ggg 这俩的总词数是5而不是6坑点:AAA 和AAA1是共同的 qqqqqqq@abc 是两个: qqqqqqq和abc aa1a不行,必须连续起来才行,麻烦的点还是处理字符串。...

2021-07-23 21:59:49 7

原创 7-43 字符串关键字的散列映射 (25 分) 谜之测试点

原题:https://pintia.cn/problem-sets/15/problems/8900 sample 1 无冲突 答案正确 6 4 ms 452 KB 1 sample 2 有冲突 答案正确 8 5 ms 320 KB 2 有重复关键字 答案正确 3 5 ms 448 KB 3 最大和最小字符串,以及不足3位的字符串 答案

2021-07-22 21:42:29 10

原创 7-42 整型关键字的散列映射 (25 分)

原题:https://pintia.cn/problem-sets/15/problems/889本题是考察对哈希表的理解,这里面哈希函数是用的除留余数法。【H(key)=key%p】除留余数法的关键在于找到那个余数p;题中已经给出。规定处理哈希冲突的方法是线性探测法,就是简单地加一就行了。#include<stdio.h>#include<stdlib.h>typedef struct h{ int *data; int TableSize; }*Ha

2021-07-21 21:08:27 6

原创 Java入门学习笔记

最近在学习Java这门语言,学了就得归纳消化,不然很容易遗忘。和c比起来,前者给我的感觉就是朴实无华;java给我的感觉就是有好多新玩意,跟刘姥姥进大观园似的。从编译器上的使用就感觉出来了,像我之前用DEVC++这种编译器就是把新建源码直接往里面怼代码就行了,学Java从安装Eclipse到敲下第一个HELLO WORLD我都花了老半天..弄完以上的操作以后,我开始学习语法。【输入输出】:Java输入用的是Scanner类,想输入东西得先创建一个Scanner对象才能使用。//例如

2021-07-21 17:56:45 10

原创 7-41 PAT排名汇总 (25 分)多样排序

原题:https://pintia.cn/problem-sets/15/problems/888思路:创建一个结构体,里面包含每个考生的各种信息:姓名,成绩,分区排名,最终排名,地区struct stu { string name; int score,place,Sum_rank,zone_rank;}List[MAXSIZE];排序分成三步:第一步,对分区学生按照成绩高低进行排名,同时将排名记录进该考试信息中;第二步,对所有考生按照成绩高低进行排名,同时将排名记录进该考

2021-07-20 16:03:26 9

原创 7-40 奥运排行榜 (25 分)多项排序

原题:https://pintia.cn/problem-sets/15/problems/867无脑解法:创建了四个结构体,依次为金牌总数,奖牌总数,人均金牌数,人均奖牌数,每一个对应一个id存入这些信息之后,利用c++的sort函数,将这四个队列按从大到小排序;最后按照优先级顺序处理同个国家同时多项排名高的:金牌总数>奖牌总数>人均金牌数>人均奖牌数处理那些同个奖项里面并列的,就是判断前一项是否和当前项相等,再利用while循环找到头这样无脑的解法思路比较简单,

2021-07-19 20:30:31 40

原创 7-39 魔法优惠券 (25 分)c++优先队列

原题:https://pintia.cn/problem-sets/15/problems/866优先级队列定义:priority_queue<int,vector<int>,greater<int> >q;//Int类型//greater 默认为从小到大//换成less 就是从大到小本题思路:将优惠券放入两个队列,分别是存放负值的队列和存放正值的队列;存放负值的队列从小到大排序,存放正值的相反;商品价值同理;根据负负得正,正正还是正,我

2021-07-19 15:36:11 10

原创 7-36 社交网络图中结点的“重要性”计算 (30 分) 不用迪杰斯特拉也不用弗洛伊德

原题:https://pintia.cn/problem-sets/15/problems/863这种无权图的最短路径直接用类似于BFS的思路就可以计算了;#include<iostream>#include<queue> #define MAXSIZE 10010#define inf 666666666using namespace std;int N,M,K;int FLAG=1;int G[MAXSIZE][MAXSIZE];int dist[MAX

2021-07-17 20:52:45 5

原创 7-35 城市间紧急救援 (25 分)c语言(测试点二未通过)

原题:https://pintia.cn/problem-sets/15/problems/862思路:对迪杰斯特拉算法进行一些添加,不仅要计算最短路径,还要计算最短路径的的条数和可调动起来最多的救援队伍。最后把路径条数和队伍数量输出,把选择的那条完整路径输出。调试过很多例子了,都没发现问题。。第二个测试点就是没过。实在是没辙了。#include<stdio.h>#define MAXSIZE 1010#define inf 666666666int N,M,S,D;int

2021-07-17 20:48:07 6

原创 7-34 任务调度的合理性 (25 分)c++ vector

原题:https://pintia.cn/problem-sets/15/problems/861思路:1.计算每个结点的入度数2.入度数为0的结点表示无需依赖其他工程自己就可以完成,将这些结点入栈同时计数3.当栈未空时,取出栈一结点,对与它有关的结点度数减一,如果又产生入度数为0的结点则入栈同时计数。直到堆栈为空。4.如果计数结果和结点总数相等说明每一个任务都可以完成,输出1#include<iostream>#include<stack>#defin

2021-07-17 20:39:17 6

原创 7-33 地下迷宫探索 (30 分)c语言

原题:https://pintia.cn/problem-sets/15/problems/860看题目给出的输入输出样例就知道,这是要我们对该图从起点S出发进行深度优先搜索(DFS)遍历该图,同时要我们给出返回的路线,那么只要对DFS稍加修改就可以实现了。题中还要求说要我们判断是否能够全部走完,如果不能还要在结尾输出0#include<stdio.h>#define MAXSIZE 1010int G[MAXSIZE][MAXSIZE];int n,m,k; int visi

2021-07-15 20:00:25 6

原创 7-32 哥尼斯堡的“七桥问题” c语言

原题:https://pintia.cn/problem-sets/15/problems/859思路:两点:1.判断图是否联通。使用dfs 看看每一个点是否都被visit过2.以及每个节点的度数是否为偶数算出每个点的度数,判断是否为偶数可以自己拿草稿纸试试看,只要每个节点上的度是偶数,真的可以一笔划过。至于上面两个条件实现起来就很简单了。#include<stdio.h>#define MAXSIZE 1010int G[MAXSIZE][MAXSIZE];..

2021-07-15 18:59:43 15

原创 1017 Queueing at Bank (25)银行排队

原题:题目详情 (pintia.cn)题目大意:输入N,K;N代表客户总人数,K代表窗口的个数;然后N行,分别输入 每个顾客的到达时间(h:m:s)以及他们办事所需的时间(min)要求我们算出每位顾客的平均等待时间;特别提醒:银行开业时间是8:00-17:00。提前到的要等,迟到的直接没得办理,也不用把他算进总数去平均;排队不是按窗口排的,可以理解成排成一条长龙,然后先到先得。一开始我想成是有几个窗口排几条队了。。md思路:我们需要算出所有人等待的总时间TOTAL 再让这个总时间

2021-07-14 18:06:54 1

原创 7-31 笛卡尔树 (25 分)c语言

笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字满足优先队列(不妨设为最小堆)的顺序要求,即该结点的K2值比其子树中所有结点的K2值小。给定一棵二叉树,请判断该树是否笛卡尔树。输入格式:输入首先给出正整数N(≤1000),为树中结点的个数。随后N行,每行给出一个结点的信息,包括:结点的K1值、K2值、左孩子结点编号、右孩子结点编号。设结点从0~(N-1)顺序编号。若某结点

2021-07-13 21:06:54 7

原创 7-29 修理牧场 (25 分) 哈夫曼树思想,c++优先级队列

农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i​​个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是L​i​​的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花费15,总花费为35(

2021-07-13 15:15:05 8

原创 7-28 搜索树判断 (25 分)c语言

对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给出的整数键值序列,数字间以空格分隔。输出格式:输出的第一行首先给出判断结果,如果输入的序列是某棵二

2021-07-13 14:04:07 10

原创 7-27 家谱处理c++ map

人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究。实验中,使用计算机处理家谱。为了实现这个目的,研究人员将家谱转换为文本文件。下面为家谱文本文件的实例:John Robert Frank Andrew Nancy David家谱文本文件中,每一行包含一个人的名字。第一行中的名字是这个家族最早的祖先。家谱仅包含最早祖先的后代,而他们的丈夫或妻子不出现在家谱中。每个人的子女比父母多缩进2个空格。以上述家谱文本文件为例,John这个家族最早的祖先,他有

2021-07-13 10:37:04 20

原创 7-26 Windows消息队列 (25 分)(c语言最小堆)

消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。输入格式:输入首先给出正整数N(≤10​5​​),随后N行,每行给出一个指令——GET或PUT,分别表示从队列中取出消息或将消息添加到队列中。如果指令是PUT,后面就有一个消息名称、以及一个

2021-07-12 23:19:32 6 1

原创 7-25 朋友圈 (25 分)c语言

某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。输入格式:输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学校的学生总数和俱乐部的个数。后面的M行每行按以下格式给出1个俱乐部的信息,其中学生从1~N编号:第i个俱乐部的人数Mi(空格)学生1(空格)学生

2021-07-12 17:14:10 6

原创 7-23 还原二叉树 (25 分)c语言

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC输出样例:5思路:通过先序序列找出根节点,通过中序序列的【特性】找出左右子树中序序列的特性:在根节点左侧的序列是左子树,右侧是右子树;通过根节

2021-07-12 15:36:54 6

原创 7-22 堆栈模拟队列 (25 分) c++

设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0; int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0; void Push(Stack S, ElementType item ):将元素item压入堆栈S; ElementType Pop(Stack S ):删除并返回S的栈顶元素。实现队列的操作,即入队void AddQ(E

2021-07-12 11:26:40 5

原创 7-21 求前缀表达式的值 (25 分)c语言

算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR。输入样例:+ + 2 * 3 - 7 4 / 8 4输

2021-07-11 20:16:11 18

原创 7-20 表达式转换 (25 分) c语言

算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。输入样例:2+3*(7-4)+8/4输出样例:2 3 7 4 - * + 8 4 / +

2021-07-10 23:27:46 21 2

原创 c语言写一个五子棋小游戏

部分效果图:总体设计这里我将叙述一个大概的设计过程。玩家一使用的棋子是’*’玩家二以及电脑使用的棋子是’#’。这两个字符只是方便做相关操作。实际显示时,我将玩家一显示为白棋子,玩家二显示为黑棋子。而不是直接把’*’和’#’显示给用户。棋盘用的是二维数组。一盘游戏几乎所有操作都是在这个二维数组上面实现。主要功能有:游戏背景音乐,实时棋盘的更新,棋子的移动,判断胜负,胜负播报音乐,电脑实现智能化落子。本程序分为两大部分,一部分是人机对战,另一部分是人人对...

2021-06-22 20:09:46 6255 66

原创 2021/06/07 散列表之除留余数法以及平方探测法

给出一个序列:47 7 29 11 9 84 54 20 30 总共有9个 47 7 29 11 9 84

2021-06-07 21:00:13 27

原创 2021/06/06 7-14 电话聊天狂人 (25 分)

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤10​5​​),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。输入样例:413005711862 1358862583213505711862 130886

2021-06-06 14:47:51 21

原创 2021/06/04 7-10 公路村村通 (30 分)

现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6 151 2 51 3 31 4

2021-06-04 14:41:44 32

原创 2021/06/02 7-9 旅游规划 (25 分)

有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额

2021-06-02 21:06:09 11

原创 2021/06/02 关于链表插入与邻接表表示图

#include<stdio.h>#include<stdlib.h>typedef struct node{ int date; struct node *next;}link;void insert(link **head,int a){ link *no; no=(link*)malloc(sizeof(link)); no->date=a; no->next=NULL; if(*head==NULL)//如果头为空直接插入 { *.

2021-06-02 20:59:50 7

原创 2021/05/30 多源最短路径算法(floyd算法)三个for

求多源最短路径算法当然也可以多次调用单源最短路径。这里有另一种算法,相对来说也比较容易理解;首先需要一个二维矩阵D[][] 它的作用是存储最短路径;例如D[

2021-05-30 16:31:48 18

原创 2021/05/29 单源带权图最短路径(Dijkstra算法)

该算法其实就是在无权图最短路径的算法基础上加了一点东西。它们的共同点是都需要一个记录路径长度数组dist[]和一个记录来时走过的路的数组path[];不同的是它多了一个

2021-05-29 17:27:38 26

原创 2021/05/28 无权图的单源最短路径

如上有向无权图:总共7个顶点12条边如果以顶点3开始,那么它对应的去每个顶点的路径应该是:顶点1 3->1 1 顶点2 3->1->2 2 顶点3 3->3 0 顶点4 3->1->4 2 顶点5 3->1->2->5 3 顶点6 6->3 1 顶点7 3->1->4->7 3 这里用到的算法与BFS类似;还是需要...

2021-05-28 15:47:50 28

原创 2021/05/26 7-6 列出连通集 (25 分)

给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{v​1​​v​2​​...v​k​​}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入样例:8 60...

2021-05-26 21:37:34 9

原创 2021/05/26 7-5 堆中的路径 (25 分)

将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346 23 26 24 1

2021-05-26 21:32:18 9

原创 2021/05/26 7-3 树的同构 (25 分) (已AC)

给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。![](~/28)图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N(≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1.

2021-05-26 18:02:10 4

原创 2021/05/25 7-4 是否同一棵二叉搜索树 (25 分)

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N(≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要.

2021-05-25 20:45:12 11

原创 2021/05/24 7-3 树的同构 (25 分)测试点一未通过

给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。![](~/28)图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N(≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1.

2021-05-24 13:44:25 13

原创 2021/05/23 1015 Reversible Primes (20 分)

Areversible primein any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.Now given any two positive integersN(<10​5...

2021-05-23 21:07:20 6

原创 2021/05/21 1012 The Best Rank (25 分)c语言实现(简单粗暴)

本题一上来最容易想到的就是暴力排序;事实上我也是这么做的。。建立结构体用qsort将各科成绩排一下,得到每个人的成绩排名;再择优输出即可;但是我这里遇上了个未知Bug 编译器的输出pta上的不一致。。导致第0个测试点过不了但是我自己编译器上却能过除此之外其他都没问题,包括诸如相同分数的两个人排名应该一致也已经考虑进去了。代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>struct

2021-05-21 18:26:43 12

原创 2021 /05/19 1009 Product of Polynomials (25 分)

多项式相乘。这里先用了结构体存储,再得出相乘结果(此时未合并同类项)合并同类项可以用桶排序的方法。与前面1002 做法是一样的。#include<stdio.h>struct nums{ int zhi; double xi; }; int main(){ struct nums a1[100],a2[100],a3[10010]; int i,k1,k2,j,cnt=0; double ans[10010]={0}; scanf("%d",&k1); fo

2021-05-19 21:34:42 6

111100001111五子棋.rar

五子棋游戏(c语言)使用devc++即可编译运行

2021-07-04

空空如也

空空如也

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

TA关注的人 TA的粉丝

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