深信服春招开发笔试

第一题结合当下疫情,是个分配救灾物资的题目,暴力解通过率90%。代码:

#include <iostream>

using namespace std;

struct Thing {
    string t_name;
    int num;
};

struct Need {
    string h_name;
    Thing thing;
};

int main() {
    int N;
    while(cin >> N) {
        Thing give[N];
        Thing need_thing[N];
        for(int i = 0; i < N; i++) {
            cin >> give[i].t_name >> give[i].num;
            need_thing[i].t_name = give[i].t_name;
            need_thing[i].num = 0;
        }
        int M;
        cin >> M;
        Need need[M];

        for(int i = 0; i < M; i++) {
            cin >> need[i].h_name >> need[i].thing.t_name >> need[i].thing.num;
            for(int j = 0; j < N; j++) {
                if(need_thing[j].t_name == need[i].thing.t_name) {
                    need_thing[j].num += need[i].thing.num;
                }
            }
        }
        for(int i = 0; i < M; i++) {
            cout << need[i].h_name << " " << need[i].thing.t_name << " ";
            int sum_need = 0;
            int sum_have = 0;
            int a = 0, b = 0;
            for(int j = 0; j < N; j++) {
                if(need[i].thing.t_name == need_thing[j].t_name) {
                    sum_need = need_thing[j].num;
                    a = j;
                }
                if(give[j].t_name == need[i].thing.t_name) {
                    sum_have = give[j].num;
                    b = j;
                }
            }
            int out = float(need[i].thing.num) / sum_need * sum_have;
            cout << out << endl;
            need_thing[a].num -= need[i].thing.num;
            give[b].num -= out;
        }
    }
    return 0;
}

第二题是给一个有空格的字符串,让你把空格都去掉,单词间用逗号隔开。我在本地怎么测都没问题,可提交上去通过率就是80%。。。很疑惑。放上代码:

#include <iostream>
using namespace std;

int main() {
    string str;
    while(getline(cin, str)) {
        string res = "";
        int l = 0, r = 0;
        while(l < str.size()) {
            while(l < str.size() && str[l] == ' ') {
                l++;
            }
            r = l;
            if(res.size() > 0 && r < str.size() && str[r] != ' ') {
                res += ',';
            }
            while(r < str.size() && str[r] != ' ') {
                res += str[r];
                r++;
            }
            l = r;
        }
        cout << res << endl;
    }
    return 0;
}

第三题是给一个加减乘除后缀表达式转中缀,没做完,我的思路是先根据后缀建树,然后中序遍历,也不知道能不能行。

#深信服##C++工程师##笔试题目#
全部评论
分配那几个就是多加几个map
1 回复
分享
发布于 2020-02-26 17:21
另外前面题目的确是做得不太行,太久没碰过,感觉能对一半就谢天谢地😓考研出成绩后才刚复习了十天不到,连sizeof返回的是啥都记不清了,更别说那几个概率题😑
点赞 回复
分享
发布于 2020-02-26 17:14
联想
校招火热招聘中
官网直投
第二题直接用scanf循环输入,输出加逗号就能a了
点赞 回复
分享
发布于 2020-02-26 17:26
同第一题ac第二题百分之80,最后一题写完了没粘贴完整自动交卷了哭了
点赞 回复
分享
发布于 2020-02-26 21:03
第一题各种map怼上去,求了一下总数和当前数的gcd求比例100%
点赞 回复
分享
发布于 2020-02-26 21:06
不知道多少分就可以过了 刚才查了查 深信服长沙的缺口是80个
点赞 回复
分享
发布于 2020-02-27 10:06
请问春招开发岗有面试通知吗
点赞 回复
分享
发布于 2020-02-27 22:29
第二题直接用cin输入,用一个string接收,然后接收的string放入vector里面去,之后输出的时候只要输出vector里面的内容和逗号就好了,a了(可是其实我考研结束就没看过编程)
点赞 回复
分享
发布于 2020-02-29 01:53
是只有编程题吗?
点赞 回复
分享
发布于 2020-03-23 18:01
一般离笔试前多久会收到笔试通知呀
点赞 回复
分享
发布于 2020-03-23 18:15
请问笔试只有编程题吗?
点赞 回复
分享
发布于 2020-03-23 19:46
请问研发管理培训也是考这些么?
点赞 回复
分享
发布于 2020-03-23 20:11
请问只有编程题吗?
点赞 回复
分享
发布于 2020-03-23 20:38

相关推荐

1 18 评论
分享
牛客网
牛客企业服务