自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 根据二叉树的前序和中序找到给定结点的公共祖先

题目:如果已知二叉树的前序遍历结果和中序遍历结果,分别用S1,S2表示,其中的字符代表树的结点。设计算法求距离指定的两个结点最近的共同祖先。给定任意一棵树,如图所示。前序ABCDEFGH中序BDCAFEGH易知,如果给定的结点分别在某节点左儿子,右儿子上,则根节点就是最近的祖先结点。如果在单支树上,则需要模拟遍历过程。假设给定C、D模拟过程如下:A在CD右侧,则CD在A的左子树,前序指针后移一位B在CD左侧,则CD在A的右子树.

2021-11-02 09:52:18 410 1

原创 二叉树的部分操作

二叉树部分操作

2021-10-25 20:38:44 208

原创 线程与工作时间

有n个线程,需要执行m个作业,不考虑线程切换等因素,来执行完这些任务最快需要多少时间。输入:n:n个线程m:m个任务,每个代表执行时间。输出:最快施行时间样例输入:3                  1 3 2 4 5样例输出:5思路:作业调度算法有FCFS以及SJF由于同时到达一批任务,尝试用SJF的方.

2021-10-11 10:54:17 412

原创 1087 All Roads Lead to Rome (30 分)

题意:输入城市个数、路线个数、出发城市。城市的快乐值(权重),城市之间的路线花费(权重),求最短路线个数、最短路线花费,沿途城市快乐值之和、平均快乐值题目链接思路:原本想将城市名hash之后变量、发现数据范围过大、通过map实现城市下标以及下标与城市之间的映射、通过dijkstra算法,再通过dfs获取所求#include<cstdio>#include<cstring>#include<vector>#include<map>#includ.

2021-09-05 16:40:59 194

原创 1098 Insertion or Heap Sort (25 分)以及堆排序思想

给定序列长度n,给定初始序列,再给定经过若干次排序后的序列,判断是插入排序还是堆排序,并进行下一次排序。题目链接思路:插入排序特点:序列前半部分有序,后半部分不变。堆排序特点:后半部分有序,前半部分无序,也无规律,所以如果通过判断后半部分有序可能也可以判断是哪一种排序。这里给出先判断插入排序,如果是插入排序,那么只要进行下一次排序就好了,否则就是堆排序,前面提到,由于堆排序后半部分有序,则可以判断下一个需要排序的位置。而不用从头开始推演一遍,对于每个序列进行比较。堆排序通用模板要点:最后一个.

2021-08-29 21:41:48 96

原创 C语言学习提纲

1.程序设计和C语言程序:就是一组计算机能识别和执行的指令。低级语言完全依赖具体机器特性,面向机器的语言,由于”贴近“计算机。机器语言:能直接识别和接受的二进制代码称为机器机器指令。机器指令的集合称为该计算机的机器语言。符号语言:计算机不能直接识别和执行符号语言的指令,需要用汇编程序把符号语言的指令转换为机器指令。又称汇编语言。高级语言与具体机器距离较远,故被称为计算机高级语言。用编译程序把用高级语言写的程序(源程序)转换为机器指令的程序(目标程序),高级语言的一个语句往往对应多条机器指令

2021-08-22 22:52:40 1614

原创 1052 Linked List Sorting (25 分)

1052 Linked List Sorting (25 分)题意,将链表排序。输出格式为地址 值 下一节点地址,-1代表NULL.题目链接思路:新建一个数组,将结点信息存入,之后建立vector存储有效结点,对节点排序后输出。坑:测试点4没有有效结点,所以vector输出时要先判定长度,对于该测试点只要加一个printf(“0 -1")就好了#include<stdio.h>#include<vector>#include<algorithm>usin

2021-08-15 18:06:10 71

原创 C指针学习总结

指针在内存中通过地址访问变量单位,将地址形象化地称为指针指针。通过变量名对变量进行访问称为“直接访问”。通过指针存储变量地址,通过指针访问变量称为“间接访问”。简而言之:一个变量的地址称为该变量的"指针"如果有一个变量专门存放另一个变量的地址(指针),则该变量为“指针变量”指针变量#include<stdio.h>int main() //例1{ int a=100; int *p=&a; printf("%d %d %o",a,*p,p);//输出a的

2021-08-12 10:16:02 1667

原创 1022 Digital Library (30 分)

题意,给定书的信息,最后通过书的信息反查书的编号。第一行:长度为7的数字第二行:书名,不超过80字符第三行:作者,不超过80字符第四行:关键字,每个关键字不超过10个字符,用空格分割第五行:出版社,不超过80字符第六行:出版年份[1000,3000]题目链接思路通过Map,将书的编号与书的信息连接起来,但关键字有点复杂,就另开一个vector存关键字,最后发现输出的编号不是递增,且编译总是过不了。#include<iostream>#include<map>.

2021-08-05 15:23:24 86

原创 1039 Course List for Student (25 分) &&1047 Student List for Course (25 分)

题意:有NNN个学生查询总共KKK种课程的选课情况,接下来的数字代表课程id,选课学生数量,下一行是选课该课程学生的姓名,由3位大写字母和1位数字组成,最后一列是NNN个学生姓名。题目链接思路:用map<string,string>存储学生姓名以及选课情况,每遇到一个id,连接(拼接)该id。最后用map输出选课结果#include<iostream>#include<cstdio>#include<map>#include<algori.

2021-07-31 18:28:19 134

原创 1078 Hashing (25 分)

题意:输入Msize(表长,如果不是质数,找到大于N的最小质数)N(所要插入的个数)≤MsizeN(所要插入的个数)\leq MsizeN(所要插入的个数)≤Msize,以及N个数字,用平方探测法进行构造哈希表。题目链接开始思路:初始化hash表为false,如果表中没有这个数,那么将hash这个下标的值改成true,(存入表中),如果有这个数,那么这个将探测过的下标记录到另一个数组,如果再次访问到(说明循环),那么这个数就不能哈希。#include<stdio.h>#inc.

2021-07-29 22:09:04 164

原创 1049 Counting Ones (30 分)

题意:输入n,输出从1-n之间1的个数,n≤230n\leq2^{30}n≤230问题求解:[1,10)出现1的次数为1[1,99)出现1的次数为20,结尾为1的个数(10个)+1开头的数字(10个)[1,999)出现1的次数为300,结尾为1(100=10*10个)+中间为1(100)+开头为1(100个)…通过归纳法可得:an=10an−1+10n−1,n≥2a_n=10a_{n-1}+10^{n-1},n\geq2an​=10an−1​+10n−1,n≥2,其中a1=1a_1=1a1.

2021-07-28 09:32:37 96

原创 PTA (乙级)1035 插入与归并 (25 分)

PTA (乙级)1035 插入与归并 (25 分)简单概括下题目意思,给定初始数组,在经过若干次排序后,判断该排序方式是插入或者是归并,并且输出下一次排序的结果。解题思路:因为插入排序相对与归并更好判断,所以先判断是否是插入排序判断方法如下:因为插入排序后半部分是不变的,假设数组在下标为iii的时候开始无序,那么从这个地方开始判断后半部分是否相同,如果后半部分相同,则是插入排序,否则是归并排序。归并排序需要知道当前归并子列的长度,通过判断子列间的有序型得出子列长度原数组4 2 1 3 13

2021-07-25 21:11:34 302

原创 1067 Sort with Swap(0, i) (25 分)

1067 Sort with Swap(0, i) (25 分)举个例子,有以下数据i01234a[i]04321根据线性代数知识,可以分成{0},{1,4},{2,3}三组。记包含0的组合的个数为n0n_0n0​,每个不包含0的组合为nin_ini​在包含0的组合交换次数为n0−1n_0-1n0​−1次,不包含0的组合需要先将0换入,然后交换(ni+1)−1(n_i+1)-1(ni​+1)−1次,再将0换出,即ni+1n_i+1ni​+1次交换总次数=

2021-07-13 12:22:18 91

原创 最短路算法 算法 python实现

Dijkstra 算法[python]Dijstra作为一种经典的单源最短路算法,得到了广泛应用。算法思想如下:说明:S为最短路顶点集合U为尚未加入S的顶点集合cijc_{ij}cij​表示点i和点j之间的距离wijw_{ij}wij​表示点i和点j之间的权重初始时S只包含源点v,v到自己的距离为0.从U中选择顶点temp,使得v->temp的距离最短,然后把temp加入S。以temp为中间点,调整v到U中所有顶点的最短路径,分为两种情况(1)经过temp,则路径长度为cv,t

2021-04-04 19:36:27 1532 1

原创 #关于pta乙级 1017题大数除法

#关于pta 1017题大数除法的程序问题测试点1总是通不过这里附上源代码**#include<iostream>using namespace std;int main(){ char a[1001],b[1001]; int c,i=0,t,L=0,d=0,n=0; cin>>a>>c; while(a[i]!='\0') { L...

2019-10-29 21:34:28 233

空空如也

空空如也

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

TA关注的人

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