2019年杭电笔试题(回忆版)

第一题
电影院要给顾客排座位号,规定成年人为奇数,未成年人为偶数。先输入总人数n(1<=n<=1000),再输入n个整数,要求输出成年人与未成年人的人数及各自的比例(保留两位小数)。
例:
输入 5  1  2   3  4   5
输出 3  0.60   2   0.40

#include
int main(){
    int n;//总人数
    int num1,num2;//分别记录成年人与未成年人的人数
    while(scanf("%d",&n)!=EOF){
        int k;
        num1=num2=0;
        for(int i=0;i


第二题
先输入一个整数n(1<=n<=1000),再输入y1 y2 …yn等n个整数,其中yi表示横轴为i纵轴为yi,以(i,0)和(i,yi)为端点做x轴的n个垂线,求任意两个垂线间所能构成的最大面积。
例:
输入 5  1  7  4  3  9
输出 21

2019年杭电笔试题(回忆版)_第1张图片

#include
int min(int a,int b)
    {return amax)//不断更新最大值
                    max=area;
            }
        printf("%d\n",max);//输出
    }
}

第三题
这是一道深度学习算法题,是试卷4道题中最难的一个,此题有三小问,由于题干太长信息太多实在记不清了。
第四题
有n(1<=n<=100)个小朋友,小朋友之间具有朋友关系并且朋友关系是可以传递的,例如A与B是朋友B与C是朋友那么A与C也是朋友,朋友间构成一个朋友圈,一个朋友圈内所有的小朋友之间都具有朋友关系,求一共有多少朋友圈。先输入一个整数n表示小朋友的人数,再输入一个n行n列的矩阵表示朋友关系。
输入3
0  1   0
1  0   0
0  0   0
输出
2

#include
struct E{//存朋友关系
    int a;
    int b;//表示a与b是朋友
}edge[6000];
int map[100][100];//邻接矩阵
int Tree[100];
int findRoot(int x){//找x结点的根节点
    if(Tree[x]==-1) return x;
    else{
        int tmp = findRoot(Tree[x]);
        Tree[x] = tmp;
        return tmp;
    }
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i

 

你可能感兴趣的:(杭电OJ100题)