美的笔试总结(软件开发,楼主cpp)

选择题有单选和多选,多选注意少选不得分。主要考察c++的相关理解,如智能指针,多态特性,新特性如auto,还有死锁的条件等。

编程题两道

第一道,搜金币,注意每次只能向右边或者向下,方向数组大小为2。

#include <functional>
#include <iostream>
using namespace std;
int map[1002][1002];
int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            scanf("%d", &map[i][j]);
        }
    }

    int dx[4] = {1, 0};
    int dy[4] = {0, 1};
    long long ans = 0;
    function<void(int, int, long long)> search_map = [&](int i, int j, long long coins) {
        if (i < 1 || i > n || j < 1 || j > n || map[i][j] == -1) {
            ans = max(ans, coins);
            return;
        }
        int temp = map[i][j];
        coins += temp;
        map[i][j] = -1;
        for (int k = 0; k < 2; k++) {
            search_map(i + dx[k], j + dy[k], coins);
        }
        coins -= temp;
        map[i][j] = temp;
        return;
    };
    search_map(1, 1, 0);
    cout << ans << endl;
    return 0;
}

第二道 一个表头为 head 的单向链表, 链表每个节点里面存储了一个随机数,对于链表中任意三个相邻的节点,如果前两个节点的和等于第三个节点,我们认为该链表不够随机。为了去除这种不符合要求的数据,我们需要删除这三个节点中的中间那个节点。 个人思路 使用两个deque 其中一个作为窗口使用 不断读入数字 当窗口大小为3时开始判断 符合要求时 将队首弹出到辅助deque中 不符合要求时 在取回来继续判断即可。

#include <iostream>
#include <queue>
#include <stack>
using namespace std;

int main() {
    int temp = 0;
    deque<int> window;
    //用来保存window窗口塞满时的队首元素
    deque<int> prewindow;
    while (scanf("%d", &temp) != EOF) {
        window.push_back(temp);
        while (window.size() == 3) {
            if (window[0] + window[1] == window[2]) {
                // 记住此时的队首元素
                int front = window.front();
                // 记住此时的队尾元素
                int back = window.back();
                if (!prewindow.empty()) {
                    int help_back = prewindow.front();
                    prewindow.pop_front();
                    window.clear();
                    window.push_back(help_back);
                    window.push_back(front);
                    window.push_back(back);
                } else {
                    window.pop_back();
                    window.pop_back();
                    window.push_back(back);
                }
            } else {
                int front = window.front();
                window.pop_front();
                prewindow.push_back(front);
            }
        }
    }
    vector<int> ans;
    for (int i = 0; i < prewindow.size(); i++) {
        printf("%d ", prewindow[i]);
    }
    for (int i = 0; i < window.size(); i++) {
        printf("%d ", window[i]);
    }
    return 0;
}

全部评论

相关推荐

庸也君:简历粗略看,有可能会被paas,如果详细地看的话,简历写的很优秀,很规范,部分内容也有量化
点赞 评论 收藏
分享
04-06 11:24
已编辑
太原学院 C++
真烦好烦真烦:感觉不太对劲,这种主动加微信的一般都是坑,要小心辨别
点赞 评论 收藏
分享
评论
4
12
分享

创作者周榜

更多
牛客网
牛客企业服务