- 博客(22)
- 资源 (7)
- 收藏
- 关注
原创 藏得很深的八阿哥
实际上,左右子树的父节点都是相同的,是左右子节点不同。father+2,所以非常容易陷入思维定式,不假思索得将递归下一层左子树父节点设为2。在由二叉树后序遍历和中序遍历获得层次遍历的下列代码中,有一个隐藏得很深的八阿哥。father+1,右子树父节点设为2。father+1,而右子树序号是2。
2024-08-06 17:47:31
223
原创 小tips
这是因为前序遍历及中序遍历序列用的是结点的具体值而不是序号,结点的序号是唯一的,不会在遍历序列中出现相同值,所以构建的二叉树也是唯一的。而使用结点具体值来代表结点,若两个或多个结点的具体值相同则无法通过遍历序列来确认谁是谁,从而造成构建的树不唯一。所以,关键点在于要用树结点序号来标识遍历序列,遇到用结点具体值来标识遍历序列且结点值没有两两不同,则构建树不唯一,本质是没有确立结点值与结点的一一对应,以后遇到类似的问题需要注意。假如前序遍历为:6162,中序遍历为:1662,会有两种情况。
2024-07-28 14:14:03
303
原创 剑指 Offer II 056. 二叉搜索树中两个节点之和(dfs + hashTable)
给定一个二叉搜索树的 根节点 root 和一个整数 k , 请判断该二叉搜索树中是否存在两个节点它们的值之和等于 k。假设二叉搜索树中节点的值均唯一。
2023-01-01 19:32:16
222
原创 2469. 温度转换(浮点数保留位数)
给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度(Celsius)为单位。你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度(Fahrenheit),并以数组 ans = [kelvin, fahrenheit] 的形式返回结果。返回数组 ans。与实际答案误差不超过 10^-5 的会视为正确答案。注意:开氏度 = 摄氏度 + 273.15华氏度 = 摄氏度 * 1.80 + 32.00示例 1 :输入:celsius = 36.50。
2022-12-08 22:55:26
783
原创 412. Fizz Buzz(整型转换为String)
给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。answer[i] == “Fizz” 如果 i 是 3 的倍数。answer[i] == “Buzz” 如果 i 是 5 的倍数。answer[i] == i (以字符串形式)如果上述条件全不满足。来源:力扣(LeetCode)
2022-12-07 22:31:49
212
原创 编译原理实验三 TINY语法分析器
PS:本次语法分析器实验在我的实验一词法分析器的基础上完成,我把实验一的词法器类稍作修改获得代码的token串以支持语法分析器类LL1,参考了其他博主的first follow集求解代码以及预测分析表的生成代码,注意要修改成符合自己代码数据结构的形式博文传送门但是他的求Follow集的代码有一点错误:求Follow集那里,只有产生式规则右部的某个非终结符B的右边其他非终结符C、D、E…的First集都包含空串时,这时才可以把产生式规则左部的Follow集加到该非终结符B的Follow集里,而不是只要紧挨
2020-12-20 00:02:57
5566
7
原创 编译原理实验二 NFA确定化和DFA最小化
ps:实验要求文件的推荐 NFA 数据格式有大问题,对于NFA来说,因为NFA对于一个字符可能有多个转移状态,所以推荐的格式不能全部储存到。本人写的时候以为避开了雷,However,没注意替换成了状态转移表的存储格式,于是…出现了一个新的问题:对于一个状态到另一个状态如果有多个字符可以到达那就歇菜了。谨慎参考。不过有一说一,推荐的状态子集用unsigned long long 二进制表示存储非常非常非常……非常方便编译原理第二次实验报告(一)NFA—>DFA(2小时)一、实验目的学习和掌握将N
2020-11-22 12:36:25
5441
2
原创 编译原理实验一 TINY词法分析器
本次实验之前看了很多学长的代码,给了我很多的思路和解决方法,灰常感谢。编译原理实验一词法分析器实验报告一、实验目的学习和掌握词法分析程序手工构造状态图及其代码实现方法。二、实验任务⑴阅读已有编译器的经典词法分析源程序;⑵用C或C++语言编写一门语言的词法分析器。三、实验内容① 我选择的编译器以及需要分析的语言是TINYTINY语言的详细定义:TINY的程序结构很简单,它在语法上与 Ada或Pascal的语法相似:仅是一个由分号分隔开的语句序列。另外,它既无过程也无声明。所有的变量都是整型
2020-11-22 12:01:49
6341
1
原创 《Operating Systems:Three Easy Pieces》第四章课后习题解答
4.1答:./process-run.py -l 5:100,5:100 命令行要执行的操作是CPU运行两个进程,而且每个进程都包含了5条指令,每条指令的CPU占用率都是100%。所以CPU的利用率一直会是100%。4.2答:完成这两个进程需要10单位的时间。首先我们可以知道命令行./process-run.py -l 4:100,1:0中的4:100,1:0表示CPU中一共有两个进程,先运行的进程4:100一共有4条指令,每条指令的CPU占用率都是100%,一共耗去4单位时间。随后的进程1:00表
2020-09-30 22:13:44
939
1
原创 《Operating Systems:Three Easy Pieces》第五章课后习题解答
5.11.编写一个调用 fork()的程序。谁调用 fork()之前,让主进程访问一个变量(例如 x) 并将其值设置为某个值(例如 100)。子进程中的变量有什么值?当子进程和父进程都改变 x 的值时,变量会发生什么?答:根据终端的输出结果我们可以看到一共有两个命令提示符出现,说明确实是运行了两个进程。父进程子进程首先就分别输出本进程中x的值,随后进行不同的修改。可以看到先执行的是父进程输出x初始值,再输出了父进程的改变的x的值。随后执行的子进程输出的又是x初始值,不是父进程改变后的x值,最后输出子
2020-09-30 22:13:29
1663
2
原创 《Operating Systems:Three Easy Pieces》第七章课后习题解答
7.11.使用 SJF 和 FIFO 调度程序运行长度为 200 的 3 个作业时,计算响应时间和周转时间。答:① SJF:因为SJF是shortest job first,当进程同时到达CPU时,优先执行运行时间最少的进程,但是SJF是非抢占式调度策略,不会在一个进程未执行完时进行切换到另一个进程。所以运行长度为200的3个作业时,因为运行长度一样,所以一个接一个地执行。周转时间、响应时间、等待时间如下表:响应时间 周转时间 等待时间作业1 0 200 0作业
2020-09-30 22:13:19
1840
原创 《Operating Systems:Three Easy Pieces》第八章课后习题解答
8.11.只用两个工作和两个队列运行几个随机生成的问题。针对每个工作计算 MLFQ 的执行记录。限制每项作业的长度并关闭 I/O,让你的生活更轻松。答:python3 mlfq.py -n 2 -j 2 -m 15 -M 0 -s 50参数设置-n 2代表2个队列,-j 2 代表2个作业,-m 15 表示随机生成的作业最大运行时间为15,-M 0 表示随机生成的作业最大I/O频率为0,即关闭I/O,-s 20 设置随机种子为50。最后随机生成的情况为每队列时间片为10,Job 0: startTime
2020-09-30 22:13:08
942
3
原创 《Operating Systems:Three Easy Pieces》第九章课后习题解答
9.11.计算 3 个工作在随机种子为 1、2 和 3 时的模拟解。答:① 随机数种子为1随机数序列为:651593,788724, 93859, 28347,835765,432767,762280,2106,445387,721540,228762,945271根据作业长度及随机数序列推得作业票号变化:Job 0(0-83) Job 1(84-108) Job 2(109-152)Job 0(null) Job 1(0-24) Job 2(25-68)Job 0(null
2020-09-30 22:12:53
931
原创 STC-B学习板单片机编程
Whack a Mole 打地鼠/**********************Whack a Mole ´òµØÊóÐͺÅ:STC15F2K60S2 Ö÷Ƶ:11.0592MHz************************/#include "STC15F2K60S2.H"#include <stdlib.h>#define uint unsigned int#define uchar unsigned char#define T 30000#define NUM 2
2020-09-26 23:51:31
3528
原创 C++ 任意年份日历
完整源码#include<stdio.h>#include<stdlib.h>int main(){ int n,a,b,c,xinqi,i,j,num,temp1,temp2,temp3; printf("请输入年份:\n"); scanf("%d", &n); a = n/100; b = n/4; c = (n+b-a)%7; if(c<=2) xinqi = c+5-((n%4==0)&&(n%100!=0)||(n%40
2020-09-26 23:43:45
428
原创 C++ “电子宠物游戏”
完整源码#include <iostream>#include <fstream>#include <stdlib.h>#include <time.h>#include <cstring>using namespace std; struct Food{ string name; int consume;}F[4];//食物库 //以下所有bool函数遵循成功执行该项操作返回true,否则返回false的原则 clas
2020-09-26 23:39:28
3330
5
原创 C++ “武将游戏”开发
完整源码#include <iostream>#include <algorithm>#include <string>#include <cstdlib>#include <iomanip>#include <list>#include <ctime> #include <windows.h>//可以使用color(颜色代号修改输出字体颜色) #define color(A) SetCons
2020-09-26 23:36:44
401
原创 C++ 简单的Huffman Tree编码程序
完整代码#include <iostream>#include <fstream>#include <cstdlib>#include <string>#include <vector>#include <stack>#include <algorithm>#include <windows.h>using namespace std;typedef struct Node{ char c
2020-09-26 23:32:34
214
原创 数的划分(DFS 动态规划)
链接:https://ac.nowcoder.com/acm/problem/16695来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,...
2020-09-26 23:10:39
412
原创 CCF认证考试历年1、2题AC代码
CCF认证考试历年1、2题AC代码1.ISBN号码#include<iostream>using namespace std;int main(){ char ch; int a[3],sum=0,temp=0,b[9]={1,4,3,2,9,8,7,6,5}; for(int i=0;i<3;i++) { cin>>a[i]>>c...
2019-09-07 12:15:46
586
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人