HDU:杭电 2019 复试真题汇总

2019杭电计算机复试笔试题

  1. 电影院的座位分配为成年人的座位为奇数,非成年人的座位为偶数。现在输入一个N代表人数,依次输入N个有人的座位号,判断成年人有几个,所占比例是多少(保留小数点后两位),非成年人有几个,所占比例是多少(保留小数点后两位)。

    #include<stdio.h> #include<iostream> #include<string> #include<string> using namespace std; //21:56 int main() { float N; int temp; cin>>N; float count=0,teenger=0; for(int i=1;i<=N;i++) {

        cin>>temp;
        if(temp%2==1)
            count++;
        else
            teenger++;
    }
    printf("%.2f\n",count/N*100);
    printf("%.2f\n",teenger/N*100);

    }


  1. 在二维坐标系中,做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<iostream> #include<string> #include<string> #include<vector> using namespace std; //22:04 typedef struct { int x; int y; }line; int main() { int N,Max=-1; cin>>N; vector<line>s1; for(int i=1;i<=N;i++) { line temp; cin>>temp.x>>temp.y; s1.push_back(temp); }

    for(int i=0;i<s1.size();i++)
    {
        for(int j=0;j<s1.size();j++)
        {
        
            int t=abs(s1[i].x-s1[j].x)*min(s1[i].y,s1[j].y);
                if(Max==-1)Max=t;
            if(t>Max)
                Max=t;  
        }
    }
    cout<<Min;

    }


  1. 使用卷积神经网络将一张图片进行卷积处理。

    1. 给出卷积公式,还给出图片的边缘处理方式,要求用代码实现图片卷积的过程。

    2. 给出一张图片,让你画出卷积后的图片。

    3. 给出两个函数(已知,直接调用即可,不用实现),一个是图片读入函数,一个是图片保存函数。要求实现从图片读入,经过卷积变形,最后保存结果这么一个过程。//第三题还可以,直接依据已经存在的函数进行调用即可,所以说难题中也有可以拿分项


  1. 找朋友。假设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

    #include<stdio.h> #include<iostream> #include<vector> #include<queue>

    using namespace std;

    int main() { int N; if (!(cin >> N)) return 0;

    // 1. 初始化数组
    vector<vector<int>> arr(N, vector<int>(N));
    vector<int> vis(N, 0); // 修正为一维,并初始化大小为 N
    ​
    for(int i=0; i<N; i++) {
        for(int j=0; j<N; j++) {
            cin >> arr[i][j];
        }
    }
    ​
    int count = 0;
    ​
    // 2. 遍历每个人,寻找朋友圈起点
    for (int i = 0; i < N; i++) {
        if (vis[i] == 0) {
            count++; // 发现新朋友圈
            
            // 3. 开始一轮标准 BFS
            queue<int> q;
            q.push(i);
            vis[i] = 1;
    ​
            while (!q.empty()) {
                int person = q.front();
                q.pop();
    ​
                // 检查所有潜在的朋友
                for (int j = 0; j < N; j++) {
                    if (arr[person][j] == 1 && vis[j] == 0) {
                        vis[j] = 1; 
                        q.push(j);
                    }
                }
            }
        }
    }
    ​
    cout << count << endl;
    return 0;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值