2018杭电计算机复试笔试题
1 简单题
题目1:杭电实验室会定期去电影院看电影,按照惯例,每个成员需要先抽一个号码。
给出n个人的名字,各抽取一个数字, 自己用一种数据结构存取人的名字和抽取数字信息(票数)
1.定义一种数叫丑数,其因子除1外只有2.3.5的倍数,(例如4,10,是丑数,11,13不是),输出所有抽到丑数的人的名字
2. 根据个人所抽数字大小升序排序, 输出排序后的所有名字
3.现有一个新名字加入,将名字插入所有名字中间(n/2)处,并排序输出所有名字
5
BOB 9 Alice 12 Tom 5 jack 7 Nick 4
2019杭电计算机复试笔试题
1 简单题
1.电影院的座位分配为成年人的座位为奇数,非成年人的座位为偶数。现在输入一个N代表人数,依次输入N个有人的座位号,判断成年人有几个,所占比例是多少(保留小数点后两位),非成年人有几个,所占比例是多少(保留小数点后两位)。
input
5 5 3 2 6 11
output
3 0.60 2 0.40
解决方法:
#include <stdio.h>
int main(){
int n,i;
scanf("%d",&n);
int num;
int jinum=0,ounum=0;
for(i=0;i<n;i++){
scanf("%d",&num);
if(num%2==1)
jinum++;
else
ounum++;
}
printf("%d %.2f %d %.2f",jinum,jinum*1.0/n,ounum,ounum*1.0/n);
return 0;
}
2 求最大面积
2.在二维坐标系中,做N条垂直线(与x轴垂直),起点为(i, 0),终点为(i, Yi)。i为自然数, 0<= i <= N。试从N条垂直线中取出2条并且与X轴形成一个凹型水槽,向其中注水,问如何选择垂线能使注入的水最多(即两条垂线的x坐标之差的绝对值乘上两条垂线段中y坐标较小的那个,得到的结果要最大)。先输入一个数N,代表垂线段的个数,在输入N个Yi(i = 0,1,2.....N-1)。
直接无脑复杂解决
input
11 2 8 6 7 4 8 9 2 7 3 5
output
49
解决方法:
#include <stdio.h>
#include <math.h>
int main(){
int n,i,j;
scanf("%d",&n);
int num[n];
for(i=0;i<n;i++){
scanf("%d",&num[i]);
}
int max=-100,temp;
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
temp=(j-i)*fmin(num[i],num[j]);
if(max<temp)
max=temp;
}
}
printf("%d",max);
return 0;
}
3 图论(bfs,dfs,并查集)
3.找朋友。假设A是B的朋友,那么B也是A的朋友,C与B为朋友,则C与A也为朋友,另外,自己与自己也是朋友。输入一个数N,代表人数,紧接着输入一个N*N的矩阵,1代表两个人是朋友,0代表两个人不是朋友。求有几个朋友圈。
input:
3
1 1 0
1 1 0
0 0 1
output
2
解决方法:
4
4.使用卷积神经网络将一张图片进行卷积处理。
(1)给出卷积公式,还给出图片的边缘处理方式,要求用代码实现图片卷积的过程。
(2)给出一张图片,让你画出卷积后的图片。
(3)给出两个函数(已知,直接调用即可,不用实现),一个是图片读入函数,一个是图片保存函数。要求实现从图片读入,经过卷积变形,最后保存结果这么一个过程。