科目组合
计算机: 数据结构 、计算机组成原理 、操作系统 、计算机网络
1)
基本设计思想:后序遍历二叉树,对于每个结点,若左右子树均存在,则左子树的最大值与当前结点值的差为左子树的最小距离,右子树的最小值与当前结点值的差为右子树的最小距离,若二者相等则计数。
2)
#include <limits.h>
// 返回: pair(子树最小值, 子树最大值)
// 同时通过引用参数 count 统计符合条件的结点数
void helper(TreeNode* root, int& count, int& minVal, int& maxVal) {
if (!root) {
minVal = INT_MAX;
maxVal = INT_MIN;
return;
}
int leftMin, leftMax;
int rightMin, rightMax;
helper(root->left, count, leftMin, leftMax);
helper(root->right, count, rightMin, rightMax);
// 更新当前子树的最小值和最大值
minVal = (root->left) ? leftMin : root->val;
maxVal = (root->right) ? rightMax : root->val;
// 如果左右子树都存在
if (root->left && root->right) {
int leftDist = root->val - leftMax; // 左子树最大值最接近当前结点值
int rightDist = rightMin - root->val; // 右子树最小值最接近当前结点值
if (leftDist == rightDist) {
count++;
}
}
}
int countNodes(TreeNode* root) {
int count = 0;
int minVal, maxVal;
helper(root, count, minVal, maxVal);
return count;
}
3)
每个结点只访问一次,每次访问只进行常数时间操作(比较、赋值),因此时间复杂度为 O(n),其中 n 是树中结点数。
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的设计思想与标准答案中的最优解一致,采用后序遍历,利用二叉搜索树的性质,通过维护子树的最小值和最大值来计算左右子树与当前结点的最小距离。思路描述清晰且正确。
(2)得分及理由(满分9分)
得分:7分
理由:学生的代码整体思路正确,实现了后序遍历,并在遍历过程中维护子树的最小值和最大值。但在更新当前子树的最小值和最大值时存在逻辑错误:
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了时间复杂度为O(n),每个结点只访问一次,常数时间操作,与标准答案一致。
题目总分:3+7+2=12分
1)
图的边 权值
A->B 2
A->C 4
B->D 5
B->E 7
C->E 10
D->A 3
D->F 6
E->C 8
E->F 6
F->G 3
2)
强连通分量数量:4
变为 1 个 SCC:至少加 1 条边,例如 G→A
顶点数大于 1 的 SCC 数量变为 0:至少删 2 条边,例如 A→B 和 E→C
3)
判断关键路径思路:先判断是否为 DAG(拓扑排序成功),然后计算 ve、vl,若存在 e=l 的活动形成的源点到汇点的最长路径,则存在关键路径。
十字链表优势:方便查找顶点的入边,计算 vl 时无需构建逆邻接表。
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生正确列出了所有边及其权值,包括C↔E的双向边(C→E权值10,E→C权值8),与标准答案完全一致,图形结构正确。
(2)得分及理由(满分3分)
得分:2分
理由:强连通分量数量4正确({A,B,D}、{C,E}、{F}、{G}),得1分;添加边方案G→A虽然能使整个图强连通,但标准答案要求"最直接"的方案,G→D更直接且有效,此处不扣分;删除边方案A→B和E→C中,删除A→B会破坏{A,B,D}分量,但删除E→C正确,然而标准答案要求删除两条边使所有顶点数大于1的强连通分量消失,学生方案删除A→B后{A,B,D}分量变为{A,D}(仍大于1)和{B},未完全达到要求,扣1分。
(3)得分及理由(满分3分)
得分:2分
理由:判断关键路径思路基本正确(先判断DAG,再计算ve、vl,找e=l的关键活动),但缺少对AOE网特性的描述(唯一源点、唯一汇点、正权值等),扣1分;十字链表优势描述准确(方便查找入边,无需构建逆邻接表),得1分。
题目总分:3+2+2=7分
(1)
跳转指令:3(jmp)、10(jle)、14(jl)
寻址方式:相对寻址
jmp 目标地址计算:00401008 + 2 + 21h = 0040102Bh(若按机器码)
(2)
SF=0, OF=0, ZF=0
逻辑表达式:jle → ZF=1 or SF≠OF
(3)
shll:i 乘以 4(字节偏移)
addl:加数组基地址,得 &A[i]
movl:取 A[i] 值到 ecx
cx 内容:A[i] 的低 16 位
寻址方式:寄存器间接寻址
编址方式:按字节编址
A[10] 地址:0x0804A038
(4)
CISC,因为变长指令,支持复杂内存寻址。
评分及理由
(1)得分及理由(满分4分)
得分:2分
理由:
①正确识别了三条跳转指令(jmp、jle、jl),得1分。
②正确指出采用相对寻址方式,得1分。
③jmp目标地址计算过程有误:学生计算为00401008+2+21h=0040102Bh,但正确计算应为当前指令地址00401008+指令长度2+偏移量21h=0040102Bh,而标准答案为00401031h。这里学生计算错误,可能是对偏移量的理解有误(偏移量21h应为33,但学生直接加21h),且未正确说明PC更新过程,扣2分。
(2)得分及理由(满分3分)
得分:2分
理由:
①正确给出标志位SF=0、OF=0、ZF=0,得1分。
②逻辑表达式写为"ZF=1 or SF≠OF",这与标准答案"(SF ⊕ OF)| ZF = 1"等价,表达正确,得1分。
③无扣分项。
(3)得分及理由(满分7分)
得分:6分
理由:
①正确分析三条指令功能:shll实现i×4、addl计算A[i]地址、movl读取A[i]值,得3分。
②ecx内容回答为"A[i]的低16位"错误,应为完整的A[i]值(32位),扣1分。
③正确指出寄存器间接寻址方式,得1分。
④正确指出按字节编址,得1分。
⑤正确计算A[10]地址为0x0804A038,得1分。
(4)得分及理由(满分2分)
得分:2分
理由:
正确判断为CISC,并给出合理理由(变长指令、复杂内存寻址),得2分。
题目总分:2+2+6+2=12分
(1) 互斥类划分依据:同一微周期内不能同时执行的微命令属于同一互斥类;最少 3 个互斥类。
(2) 0A4H
(3) 缺页异常(指令 7)、溢出异常(指令 8)
(4) ① 中断允许标志 IF=1;② 当前指令执行完毕;③ 无更高优先级中断或异常;④ 当前指令允许中断。
评分及理由
(1)得分及理由(满分2分)
学生答案正确指出了互斥类划分依据是"同一微周期内不能同时执行的微命令属于同一互斥类",这与标准答案一致。对于互斥类数量,学生回答"最少3个互斥类"也是正确的,因为MARin、MDRout/Rout、ALUop确实需要划分为三个互斥类。得2分。
(2)得分及理由(满分1分)
学生回答"0A4H"是错误的。根据题意,第5条指令的微程序入口地址为0A2H,由5条微指令构成,执行到第三条微指令时,微程序计数器的内容应该是0A2H+2=0A4H,但学生答案0A4H实际上是执行到第二条微指令时的地址。正确应该是0A2H+3-1=0A4H?仔细计算:入口地址0A2H对应第一条微指令,执行第一条后地址为0A3H,执行第二条后地址为0A4H,执行第三条时地址为0A5H。所以学生答案错误,得0分。
(3)得分及理由(满分2分)
学生只列出了"缺页异常(指令7)、溢出异常(指令8)",但标准答案要求两种异常类型和对应的指令号。学生缺少了指令6的溢出异常,回答不完整。根据标准答案,应该包括指令7的缺页异常和指令6、8的溢出异常。扣1分,得1分。
(4)得分及理由(满分2分)
学生回答的四个条件:①IF=1;②当前指令执行完毕;③无更高优先级中断或异常;④当前指令允许中断。这些条件基本正确且完整,涵盖了CPU响应中断的主要条件。虽然表述与标准答案略有不同,但思路正确,内容完整。得2分。
题目总分:2+0+1+2=5分
(1) 虚拟页号 00401h,TLB 标记 0040h,TLB 组号 1
(2) 4 个虚拟页
(3) 可变分配与随机置换;3 页
评分及理由
(1)得分及理由(满分2分)
学生答案中虚拟页号00401h正确(1分),TLB组号1正确(0.5分),但TLB标记0040h错误(应为0040h的高16位完整表示,标准答案为0000 0000 0100 0000B即0040h需要完整16位表示,学生只写了0040h可能被理解为16进制但未体现完整16位,扣0.5分)。得1.5分。
(2)得分及理由(满分3分)
学生答案"4个虚拟页"正确(1分),但未给出计算过程(标准答案要求给出计算过程,扣2分)。得1分。
(3)得分及理由(满分2分)
学生答案中"可变分配"正确(0.5分),但"随机置换"不准确(应为局部置换,扣0.5分)。物理页面数量3页错误(标准答案为4页,扣1分)。得0分。
题目总分:1.5+1+0=2.5分
(1) 30
(2) FAT 最大长度 10485760 字节;5000 字节对应 FAT 索引 4000;9000 字节对应 FAT 索引 4500
(3) 文件控制块(FCB);12 位
评分及理由
(1)得分及理由(满分3分)
学生答案只给出了一个簇号30,但题目要求的是文件A的三个簇(30000、32000、42500)在位图中的状态位所在的簇号。标准答案中分别计算了三个簇对应的位图簇号(30、30、31),学生只回答了一个30,且未说明是针对哪个簇,因此只能视为回答了部分内容。根据标准答案,每个簇的状态位簇号计算正确得1分,学生仅回答了一个30,且未区分三个簇,因此最多得1分。
得分:1分
(2)得分及理由(满分3分)
学生回答FAT最大长度为10485760字节,即10MB,计算正确,得1分。
对于文件B的第5000字节,学生回答FAT索引为4000,但标准答案中第5000字节位于第二个簇(簇号4000),对应的FAT表项索引应为5000(因为FAT表项索引与簇号对应,存放的是下一个簇的簇号)。学生回答4000是错误的,因此不得分。
对于文件B的第9000字节,学生回答FAT索引为4500,但标准答案中第9000字节位于第三个簇(簇号4500),对应的FAT表项索引应为4000(因为4500是下一个簇的簇号,存放在索引为4000的表项中)。学生回答4500是错误的,因此不得分。
得分:1分
(3)得分及理由(满分2分)
学生回答“文件控制块(FCB)”正确,得1分。
学生回答“12位”正确,得1分。
得分:2分
题目总分:1+1+2=4分
(1) ICMP 时间超时报文
(2) R1 收到 SYN 的目的 IP:202.120.10.1,目的端口:21;FTP 服务器收到 SYN 的目的 IP:192.168.1.10
(3) BGP;179;TCP
(4) 实现控制与数据分离,灵活管理;4 条
评分及理由
(1)得分及理由(满分1分)
学生答案正确指出主机A会收到ICMP时间超时报文,与标准答案完全一致。得1分。
(2)得分及理由(满分3分)
学生答案中R1收到的SYN报文目的IP地址(202.120.10.1)和目的端口号(21)都正确,得2分;FTP服务器收到的SYN报文目的IP地址(192.168.1.10)也正确,得1分。本小题共得3分。
(3)得分及理由(满分3分)
学生答案正确指出AS间使用BGP协议,端口号179,基于TCP传输,与标准答案完全一致。得3分。
(4)得分及理由(满分2分)
学生答案第一问回答"实现控制与数据分离,灵活管理",这与标准答案中"使协议更加简单和更容易实现"或"传输文件时可以利用控制连接进行控制"的含义基本一致,得1分;第二问回答"4条"连接,与标准答案的4次连接一致,得1分。本小题共得2分。
题目总分:1+3+3+2=9分