复旦大学计算机考研机试真题

复旦大学计算机考研机试真题

历年复旦大学计算机考研机试真题

复旦大学计算机考研机试真题

在线评测地址:传送门

树的子结构

题目描述

入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

输入格式

两行,第一行是树A,第二行是树B。

输出格式

若:B是A的子结构,输出true

否则:输出false。

输入样例
3 4 5 1 2
4 1
输出样例
true
year

2023

serial

0

数的间隙

题目描述

给一个序列a1到an,和一个d。

an数组排序后,后一个数减去前一个数的最大值不小于d。

请问最多能从an中选出多少满足条件的数字。

输入样例
xxxxx
输出样例
xxxx
year

2023

serial

1

高尔夫比赛的森林砍树

题目描述

你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个 m x n 的矩阵表示, 在这个矩阵中:

  • 0 表示障碍,无法触碰
  • 1 表示地面,可以行走
  • 比 1 大的数 表示有树的单元格,可以行走,数值表示树的高度

每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树,那么你可以决定是否要砍倒它。

你需要按照树的高度从低向高砍掉所有的树,每砍过一颗树,该单元格的值变为 1(即变为地面)。

你将从 (0, 0) 点开始工作,返回你砍完所有树需要走的最小步数。 如果你无法砍完所有的树,返回 -1

可以保证的是,没有两棵树的高度是相同的,并且你至少需要砍倒一棵树。

输入格式

第一行两个整数,分别是m和n

接下来有m行,每行n个数,代表矩阵的行。

输出格式
输入样例
3 3
1 2 3
0 0 4
7 6 5
输出样例
6
year

2023

serial

2

层次遍历

题目描述

给定一个二叉搜索树的先序遍历,求其层次遍历。

输入格式

第一行输入n,表示树中有n个节点

接下来一行输入n个数tree[i],表示树的先序遍历。

n<100000

tree[i]各不相同,但不一定为1-n的全排列,且一定可以构成二叉搜索树

输出格式

输出1行n个数,表示层次遍历的结果

输入样例
4
3 1 2 4
输出样例
3 1 4 2
year

2023

serial

2

k小数

题目描述

给定一个行列均有序的二维数组A ,长宽均为n,求A的第K小元素

输出要求

输入格式

每组询问前两个数为n,k,T

接下来2行各4个数(a1,b1,c1,d1)(a2,b2,c2,d2),表示该二维数组

n<=13000

a[x][y]=的整数部分

a1>b1,a2>b2

k<=n*n

输出格式

输出1行,表示询问的结果。

输入样例
4 4 4
1 0 0 0
1 0 0 0
输出样例
16
year

2023

serial

2

最快到达

题目描述

在一条长度为n-1 km的道路上,每1公里有一个路牌,路牌上有一个数字。你现在在第1块路牌的位置,你可以花1分钟前进1公里,也可以花1分钟飞到离你最近的与你当前所在地点路牌数字相同的地方,请问最快多久可以到达道路终点。

输入格式

第一行输入n(n<=1e5)

接下来一行n个整数a[i],代表第1-n块路牌上的数字,-1e15<a[i]<1e15

输出格式

输出一个数,代表最少的时间。

输入样例
5
1 0 -1 0 2
输出样例
3
year

2023

serial

3

最大团队表现值

题目描述

某公司在招聘工程师来组建一个团队。现有 n 个工程师进行应聘,每个应聘工程师有速度和效率两个属性。

求由最多 k 个工程师组建的团队的最大表现值。

团队表现值定义为:一个团队中"所有工程师的速度和"乘以"他们中效率的最小值"。

请你返回该团队的最大团队表现值,由于答案可能很大,请你返回结果对 10^9^ + 7 取余后的结果。

输入格式

第一行:n。表示工程师的人数

第二行:n个正整数。分别表示n个工程师的速度

第三行:n个正整数。分别表示n个工程师的效率

第四行:k。表示最多选择k名工程师

输出格式

最大团队表现值

输入样例
6
2 10 3 1 5 8
5 4 3 9 7 2
2
输出样例
60
year

2022

serial

0

字符串编辑距离

题目描述

问题描述:给定两个字符串A和B,求字符串A至少经过多少步字符操作变成字符串B。

比如eat变成tea。对于第一个字符,e != a,所以要想让这两个字符相等,有三种可以选择的办法

修改字符,将e直接变成a,需要走1步。

插入字符,在e的前面插入a,也需要走1步。

删除字符,将e删除,然后比较后面的与a,也需要走1步。

输入格式

输入字符串A和B(长度小于1000)

输出格式

输出最少经过多少步可以将A变成B

输入样例
horse
ros
输出样例
3
year

2022

serial

1

概率最大的路径

题目描述

给你一个由 n 个节点(下标从 0 开始)组成的无向加权图,该图由一个描述边的列表组成,其中 edges[i] = [a, b] 表示连接节点 a 和 b 的一条无向边,且该边遍历成功的概率为 succProb[i] 。

指定两个节点分别作为起点 start 和终点 end ,请你找出从起点到终点成功概率最大的路径,并返回其成功概率。

如果不存在从 start 到 end 的路径,请 返回 0 。只要答案与标准答案的误差不超过 1e-5 ,就会被视作正确答案。

示例 1:

输入:n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.2], start = 0, end = 2

输出:0.25000

解释:从起点到终点有两条路径,其中一条的成功概率为 0.2 ,而另一条为 0.5 * 0.5 = 0.25

示例 2:

输入:n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.3], start = 0, end = 2

输出:0.30000

示例 3:

输入:n = 3, edges = [[0,1]], succProb = [0.5], start = 0, end = 2

输出:0.00000

解释:节点 0 和 节点 2 之间不存在路径

数据范围

2 <= n <= 10^4

0 <= start, end < n

start != end

0 <= a, b < n

a != b

0 <= succProb.length == edges.length <= 2*10^4

0 <= succProb[i] <= 1

输入样例
3
0 1
1 2
0 2
0.5 0.5 0.2
0 2
输出样例
0.25000
year

2022

serial

2

完全二叉树

题目描述

给定一颗二叉树,树的每个节点的值为一个正整数。

如果从根节点到节点 N 的路径上不存在比节点 N 的值大的节点,那么节点N被认为是树上的关键节点。

求树上所有的关键节点的个数。请写出程序,并解释解题思路。

输入样例
3 1 4 3 null 1 5
输出样例
3 1 4 3 null 1 5
year

2021

serial

0

爬楼梯

题目描述

训练场上有一个台阶,总共有 n 级。一个运动员可以跳 1 级,也可以跳 2 级。

求运动员有多少种跳法。请写出程序,并解释解题思路。

输入样例
复制代码
输出样例
2
year

2021

serial

1

目标和

题目描述

给定一个非负整数序列 x1, x2, ..., xn,可以给每一个整数取负数或者取原值。

求有多少种取法使得这些整数的和等于期望值 E。

请写出程序,并解释解题思路。

输入格式

第一行:非负数序列

第二行:期望E

输出格式

取法的数量

输入样例
1 1 1 1 1
3
输出样例
5
year

2021

serial

2

排队打饭

题目描述

下课了,有 n 位同学陆续赶到⻝堂进⾏排队打饭。

其中第 i 位同学的到达时间为 ai,打饭耗时为 ti,等待时间上限为 bi,即如果其在第 ai+bi秒的时刻仍然没有轮到他开始打饭,那么他将离开打饭队列,另寻吃饭的地⽅。

问每位同学的开始打饭时间,或者指出其提前离开了队伍(如果这样则输出 -1)

输入格式

第⼀⾏⼀个整数 n (1<=n<=10^5),表⽰来打饭的同学数量。

接下来 n ⾏,每⾏三个整数 a[i],t[i],b[i] (1<=a[i],t[i],b[i]<=10^9, 1<=i<=n)

分别表⽰每位同学的到达时间、打饭耗时、等待时间上限。 保证 a[1]<a[2]<...<a[n]

输出格式

每位同学的开始打饭时间

输入样例
4
1 3 3
2 2 2
3 9 1
4 3 2
输出样例
1 4 -1 6
year

2020

serial

0

斗牛

题目描述

给定五个 0~9 范围内的整数 a1, a2, a3, a4, a5。

如果能从五个整数中选出三个并且这三个整数的和为10 的倍数(包括 0),那么这五个整数的权值即为剩下两个没被选出来的整数的和对 10 取余的结果,显然如果有多个三元组满⾜和是 10 的倍数,剩下两个数之和对 10 取余的结果都是相同的;

如果选不出这样三个整数,则这五个整数的权值为 -1。

现在给定 T 组数据,每组数据包含五个 0~9 范围内的整数,分别求这 T 组数据中五个整数的权值。

输入格式

第⼀⾏⼀个整数 T (1<=T<=1000),表⽰数据组数。

接下来 T ⾏,每⾏ 5 个 0~9 的整数,表⽰⼀组数据。

输出格式

输入n个整数,组数据中五个整数的权值

输入样例
4
1 0 0 1 0
1 0 0 8 6
3 4 5 6 7
4 5 6 7 8
输出样例
2
-1
-1
0
year

2020

serial

1

打地鼠

题目描述

给定 n 个整数 a1, a2, ..., an 和⼀个 d,你需要选出若⼲个整数,使得将这些整数从⼩到⼤排好序之后,任意两个相邻的数之差都不⼩于给定的d,问最多能选多少个数出来。

输入格式

第⼀⾏两个整数 n,d (1<=n<=10^5^,0<=d<=10^9^)

分别表⽰整数个数和相邻整数差的下界。

第⼆⾏ n个整数 a1, a2, ..., an (1<=ai<=10^9^, 1<=i<=n)

表⽰给定的 n 个整数。

输出格式

仅⼀⾏⼀个整数,表⽰答案。

输入样例
6 2
1 4 2 8 5 7
输出样例
3
year

2020

serial

2

序列

题目描述

给定⼀个⻓为 n 的序列 A,其中序列中的元素都是 0~9 之间的整数,对于⼀个⻓度同样为 n 整数序列B,定义其权值为 |A_i-B_i| (1<=i<=n) 之和加上 (B_j-B_j+1)^2 (1<=j<n) 之和。

求所有⻓为 n 的整数序列中,权值最⼩的序列的权值是多少。

输入格式

第⼀⾏⼀个整数 n (1<=n<=10^5),表⽰序列 A 的⻓度。

第⼆⾏ n 个整数 a1, a2, ..., an (0<=ai<=9, 1<=i<=n),表⽰序列 A 中的元素。

输出格式

仅⼀⾏⼀个整数,表⽰答案。

输入样例
6
1 4 2 8 5 7
输出样例
11
year

2020

serial

3

二叉搜索树

题目描述

给定⼀个 1~n 的排列 P,即⻓度为 n,且 1~n 中所有数字都恰好出现⼀次的序列。现在按顺序将排列中的元素⼀⼀插⼊到初始为空的⼆叉搜索树中(左小右大),问最后每个节点的⽗亲节点的元素是什么。

特别地,根节点的⽗亲节点元素视为 0。

输入格式

⼀⾏ n 个整数,其中第 i 个整数 ai 表⽰元素 i 对应节点的⽗亲节点的元素。特别地,根节点的⽗亲节 点元素视为 0。

输出格式

⼀⾏ n 个整数,其中第 i 个整数 ai 表⽰元素 i 对应节点的⽗亲节点的元素。特别地,根节点的⽗亲节 点元素视为 0。

输入样例
5
2 3 5 1 4
输出样例
2 0 2 5 3
year

2020

serial

4

日期差值

题目描述

输入日期格式:YYYYMMDD,求与20190205相隔天数

输入样例
20190208
输出样例
3
year

2019

serial

0

最大连续子序列

题目描述

给定一个数字序列A1,A2...An,求i,j(1<=i<=j<=n),使得Ai+...+Aj最大,输出这个最大和。

输入格式

第一行输入一个整数n,表示数列大小

第二行输入n个整数

输出格式

最大和

输入样例
6
-2 11 -4 13 -5 -2
输出样例
20
year

2019

serial

1

有向树形态

题目描述

求N个结点能够组成的二叉树的个数。 1<=n<=20

输入格式

一个整数 N。

输出格式

输出能组成的二叉树的个数。

输入样例
3
输出样例
5
year

2019

serial

2

求众数

题目描述

给定一个长度为 n 的整数序列,请你求出该序列的众数。

众数就是一个序列中出现次数最多的数字。

如果不唯一,则输出小的那个值。

输入格式

第一行输入一个整数 n,表示有 n 个数。

第二行输入n 个整数。

输出格式

输出序列中的众数,如果不唯一,则输出小的那个值。

输入样例
8
10 3 8 8 3 2 2 2
输出样例
2
year

2018

serial

0

集合交并

题目描述

输入两个集合,分别求其交集和并集中元素的个数,每个集合中可能存在相同的元素,而最终的交集和并集中应该不存在。

输入格式

第一行输入两个整数 n,m 表示两个集合中元素的个数。

第二行输入 n 个整数,表示第一个集合中的元素。

第三行输入 m 个整数,表示第二个集合中的元素。

输出格式

输出两个整数以空格分开,表示其交集和并集中元素的个数。

数据范围

1≤n,m≤10^5^,

给定集合元素取值范围 [1,109]。

输入样例
4 5
3 4 7 3
4 6 3 2 6
输出样例
2 5
year

2018

serial

1

骨牌

题目描述

有2*n 的地板,用1*2和 2*1 的骨牌进行铺地板。

问共有多少种情况。结果对 999983 取余,1<=n<=10000

输入格式

输入一个整数n

输出格式

一个整数,表示铺法数量对 999983

取模后的结果

数据范围

1≤n≤10000

输入样例
6
输出样例
13
year

2018

serial

2

求交点

题目描述

求直线交点,输入两个直线上的各两个端点,求其交点,

若无交点或无穷个交点输出一句 Parallel or coincident,输出交点保留两位小数。

输入格式

第一行包含四个整数 x1,y1,x2,y2

表示第一个直线上的两个点坐标。

第二行包含四个整数 x3,y3,x4,y4

表示第二个直线上的两个点坐标。

输出格式

输出两个直线的交点坐标,保留两位小数。

若无交点或无穷个交点输出一句 Parallel or coincident。

数据范围

0≤x[i],y[i]≤10

输入样例
0 0 5 5
0 2 2 0
输出样例
1.00 1.00
year

2018

serial

3

解一元一次方程

题目描述

解方程,给定一个字符串,代表一个一元一次方程。

如果有解求解,输出格式"x=数字",

如果解的个数无穷,输出 "infinite solutions"。

如果没有解输出"no solution",字符串长度不超过 256 。

输入格式

方程

输出格式

输入样例
2x+4-3x=x-2
输出样例
x=3
year

2018

serial

4

约数求和

题目描述

输入一个数n,输出前n个数的约数的和。

输入格式

一个整数 n

输出格式

一个整数,表示前 n个数的约数的和

数据范围

1≤n≤10^7^

输入样例
7
输出样例
41
year

2018

serial

5

求中位数

题目描述

中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

输入格式

该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.

接着N行为N个数据的输入,N=0时结束输入

输出格式

各个序列的中位数

输入样例
4
10
30
20
40
3
40
30
50
4
1
2
3
4
0
输出样例
25
40
2
year

2017

serial

0

求解校验码

题目描述

给定一个9位数字的ISBN,求其校验位。

ISBN格式为2-02-033598,校验位的计算方法如下:从左到右依次将各位数字乘10,9,8,......,2,

求出其和S,作模运算得M=S mod 11。

若11-M在1和9之间,校验位即为该数字

若11-M等于10,校验位为X;

11-M等于11,校验位为0。

输出添加校验位的ISBN,如2-02-033598-0。

输入格式

给定一个9位数字的ISBN

输出格式

输出添加校验位的ISBN

输入样例
2-02-033598
输出样例
2-02-033598-0  
year

2017

serial

1

无向图

题目描述

一个无向图,顶点为N个,顶点编号为1~N,其中M条边已给定.

现在要从K条备选边中选出若干条,使得整个图连通,且选出的边权值和最小。

输入格式

第一行输入三个整数N(N<100), M, K,

接下来一行为K个整数表示备选边的编号。

然后是是M行,每行三个数字:u,v,d(0<d<10000)表示结点u和结点v的边,权值为d

编号按照输入输入顺序依次为1~M。

输出格式

如果输入有解则输出选出的边的权值和

否则输出-1

输入样例
4 4
1 2 2
1 4 1
2 3 3
3 4 4
输出样例
6
year

2017

serial

2

最大公共子串长度

题目描述

给定两个字符串,求最大公共子串的长度。

输入样例
fdfdfd42543
232fdfdfdjlkj
输出样例
6
year

2016

serial

0

后缀序列

题目描述

给定一个后缀序列,求值,只有加减

输入样例
23+1+
输出样例
6
year

2016

serial

1

哈夫曼编码

题目描述

给定一个字符串,求哈夫曼编码的最短长度。

输入样例
aaaaabbbbcccdde
输出样例
33
year

2016

serial

2

Hanoi塔问题

题目描述

(n阶Hanoi塔问题)假设有三个分别命名为A、B、C的塔座,在塔座A上插有n(n<20)个直径大小各不相同、依小到大编号为1,2,...,n的圆盘。现要求将A轴上的n个圆盘移至塔座C上并仍按同样顺序叠排,圆盘移动时必须遵循下列规则: 1)每次只能移动一个圆盘; 2)圆盘可以插在A、B、C中的任一塔座上; 3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。 请通过编程来打印出移动的步骤.

输入格式

只有一组输入数据.输入数据N(;表示在开始时A塔座上的盘子数),当输入0时程序结束.

输出格式

输出移动的步骤.如"A-->C","A-->B"等.每两的步骤之间有三个空格隔开,每输出5个步骤就换行.详细的见Sample Output.

输入样例
5
2
0
输出样例
A-->C   A-->B   C-->B   A-->C   B-->A   
B-->C   A-->C   A-->B   C-->B   C-->A   
B-->A   C-->B   A-->C   A-->B   C-->B   
A-->C   B-->A   B-->C   A-->C   B-->A   
C-->B   C-->A   B-->A   B-->C   A-->C   
A-->B   C-->B   A-->C   B-->A   B-->C   
A-->C   
A-->B   A-->C   B-->C
year

0

serial

0

长方形中的正方形

题目描述

给出长方形的长和宽,每次从长方形里撕去最大的正方形,输出最后能得到多少正方形

输入格式

输入两个整数,n和m,分别表示长方形的长和宽,数在int范围内

输出格式

输出一个整数,表示最后能得到多少正方形

输入样例
3 4
输出样例
4
year

0

serial

1

a与b得到c

题目描述

给出a,b,c(3个整数),判断a,b能否通过±*/得到c,ab可以交换位置,可以输出YES,不可以则输出NO

输入格式

输入3个整数a,b,c,数据都在int范围内

输出格式

判断a,b能否通过±*/得到c,ab可以交换位置,可以输出YES,不可以则输出NO

输入样例
3 8 2
输出样例
NO
year

0

serial

2

最长公共子序列LCS

题目描述

问题描述:输入3个子串, 输出这3个子串的最大公共子串

输入:

abcd acb abc

输出:

ab

输入格式

如题

输出格式

如题

输入样例
abcd
acb
abc
输出样例
ab
year

0

serial

3

求最大连续公共字串长度

题目描述

题目描述:给定两个字符串,求最大公共字串的长度,长度小于1000

分为两种问题:要求计算连续最长字串的长度

如下按照寻找连续的字串理解

输入:

1111hello2222

1133hello444

输出:

5

输入格式

如题

输出格式

如题

输入样例
1111hello2222
1133hello444
输出样例
5
year

0

serial

4

相关推荐
屁股割了还要学5 小时前
【计算机网络入门】初学计算机网络(五)
学习·计算机网络·考研·青少年编程
屁股割了还要学5 小时前
【计算机网络入门】初学计算机网络(七)
网络·学习·计算机网络·考研·青少年编程
Leweslyh8 小时前
几道考研数学题求解
考研·算法
Hacker_DL9 小时前
7. 从网络获取数据
华为·harmonyos
猿六凯11 小时前
2024贵州大学计算机考研复试上机真题
考研·算法
mengweijin12 小时前
华为 Open Gauss 数据库在 Spring Boot 中使用 Flyway
数据库·spring boot·华为·flyway·gauss
竹木有心16 小时前
考研408数据结构第三章(栈、队列和数组)核心易错点深度解析
数据结构·考研
菲儿啊20 小时前
华为OD-2024年E卷-分批萨[100分]
华为od
高木的小天才21 小时前
HarmonyOS 中 Navigation 组件的应用困境与应对策略
华为·harmonyos