首页 > 阿里开发4.2笔试
头像
xclwt
编辑于 2021-04-03 19:38
+ 关注

阿里开发4.2笔试

第一题:
十分钟ac
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>


using namespace std;
int main() {
    int t;
    cin >> t;
    while (t-- > 0){
        int n;
        cin >> n;
        vector<int> data;
        unordered_map<int, bool> find;
        while (n-- > 0){
            int tmp;
            cin >> tmp;
            data.push_back(tmp);
            //find[tmp] = true;
        }

        int ans = 0;
        sort(data.begin(), data.end());
        for (int i = data.size() - 1; i >= 0; --i) {
            int tmp = data[i];
            if (find.count(tmp + 1) != 1){
                find[tmp + 1] = true;
                find.erase(tmp);
            }else{
                find[tmp] = true;
            }
        }
        cout << find.size() << endl;
    }
}

第二题:
十分钟用递归写完,结果递归层数超出,又改成栈去做,又超出内存限制,怼了50分钟没怼过去,考完把舍友当小黄鸭讲题目发现一个判断条件粗心写错了,心态炸裂,这里放出正确的:
#include <iostream>

using namespace std;

double cal(int a, int b);

int main() {
    int t;
    cin >> t;
    while (t-- > 0){
        int origin;
        cin >> origin;
        cout << cal(origin, origin) << endl;
    }
}

double cal(int a, int b){
    if (a > 0 && b <= 0){
        return 0;
    }else if (a <= 0 && b <= 0){
        return 0.5;
    }else if (a <= 0 && b > 0){
        return 1;
    }else{
        return 0.25 * cal(a - 100, b) + 0.25 * cal(a - 75, b - 25) + 0.25 * cal(a - 50, b - 50) + 0.25 * cal(a - 25, b - 75);
    }
}


全部评论

(3) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐