9.08 华为笔试

第一题

#include <bits/stdc++.h>
using namespace std;

class Tree
{
public:
    Tree(int _val) : val(_val), sum(0), left(nullptr), right(nullptr) {}

    int val;
    int sum;
    Tree* left;
    Tree* right;
};


int main()
{
    int N;
    cin >> N;
    int SumVal = 0;
    vector<Tree*> trees;

    // 记录每个节点的值和整个树的总和
    for (int i = 0; i != N; ++i)
    {
        int temp;
        cin >> temp;
        Tree* newTree = new Tree(temp);
        trees.push_back(newTree);
        SumVal += temp;
    }

    // 记录每个节点的左右子节点
    int jiedian, zijiedian;
    while (cin >> jiedian >> zijiedian)
    {
        if (trees[jiedian]->left == nullptr)
        {
            trees[jiedian]->left = trees[zijiedian];
            continue;
        }
        trees[jiedian]->right = trees[zijiedian];
    }

    // 从尾到头递归决定每个节点的sum值
    for (int i = N - 1; i >= 0; --i)
    {
        Tree* tr = trees[i];
        tr->sum = tr->val;
        if (tr->left == nullptr && tr->right == nullptr)
            continue;
        if (tr->left)
            tr->sum += tr->left->sum;
        if (tr->right)
            tr->sum += tr->right->sum;
    }

    int cha = INT_MIN;
    int biaohao = -1;
    // 计算每个节点差
    for (int i = 0; i != N; ++i)
    {
        int temp = abs(SumVal - trees[i]->sum -trees[i]->sum);
        if (temp > cha)
        {
            cha = temp;
            biaohao = i;
        }
    }

    cout << biaohao << endl;
    return 0;
}

第二题

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int M, N;
    string s;
    cin >> s;
    M = s[0] - '0';
    N = s[2] - '0';

    vector<vector<int>> vec(M, vector<int>(N, 0));
    vector<vector<int>> dp(M, vector<int>(N, 0));

    // 构建vec
    for (int row = 0; row != M; ++row)
    {
        for (int col = 0; col != N; ++col)
        {
            int temp;
            cin >> temp;
            vec[row][col] = temp;
        }
    }

    // 构建dp
    for (int row = 0; row != M; ++row)
    {
        for (int col = 0; col != N; ++col)
        {
            int jump = vec[row][col];
            if (jump == 0) continue;

            // 向下跳跃的dp
            for (int i = row + 1; i != M && i <= row + jump; ++i)
            {
                if (dp[i][col] > dp[row][col] + 1 || dp[i][col] == 0)
                    dp[i][col] = dp[row][col] + 1;
            }

            // 向右跳跃的dp
            for (int j = col + 1; j != N && j <= col + jump; ++j)
            {
                if (dp[row][j] > dp[row][col] + 1 || dp[row][j] == 0)
                    dp[row][j] = dp[row][col] + 1;
            }
        }
    }

    cout << dp[M - 1][N - 1] << endl;

    return 0;
}

第三题

#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;

int main()
{
    string targetMoKuai;
    cin >> targetMoKuai;

    unordered_map<string, int> modules;   // 模块名  时间
    unordered_map<string, vector<string>> yilai;   // 模块名  依赖模块

    string moKuai;
    while (cin >> moKuai)
    {
        int size = moKuai.size();
        int left = 0, right = 0;
        while (moKuai[right] != ',') ++right;

        string newName = moKuai.substr(left, right - left);

        ++right;
        left = right;
        while (right < size && moKuai[right] != ',') ++right;
        int newTime = stoi(moKuai.substr(left, right - left));
        modules[newName] = newTime;

        ++right;
        left = right;
        while (left < size)
        {
            while (right < size && moKuai[right] != ',') ++right;
            string newYiLai = moKuai.substr(left, right - left);

            yilai[newName].push_back(newYiLai);

            ++right;
            left = right;
        }
    }

    // 检查是否有循环依赖


    int totalTime = 0;




    return 0;
}
全部评论

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
443839次浏览 4528人参与
# 春招别灰心,我们一人来一句鼓励 #
42377次浏览 539人参与
# 北方华创开奖 #
107511次浏览 600人参与
# 地方国企笔面经互助 #
7994次浏览 18人参与
# 同bg的你秋招战况如何? #
77468次浏览 569人参与
# 实习必须要去大厂吗? #
55834次浏览 961人参与
# 阿里云管培生offer #
120549次浏览 2223人参与
# 虾皮求职进展汇总 #
116677次浏览 889人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11755次浏览 294人参与
# 实习,投递多份简历没人回复怎么办 #
2455156次浏览 34862人参与
# 提前批简历挂麻了怎么办 #
149980次浏览 1979人参与
# 在找工作求抱抱 #
906157次浏览 9423人参与
# 如果公司给你放一天假,你会怎么度过? #
4769次浏览 56人参与
# 你投递的公司有几家约面了? #
33210次浏览 188人参与
# 投递实习岗位前的准备 #
1196109次浏览 18551人参与
# 机械人春招想让哪家公司来捞你? #
157654次浏览 2267人参与
# 双非本科求职如何逆袭 #
662449次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12818次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35996次浏览 384人参与
# 简历中的项目经历要怎么写? #
86964次浏览 1517人参与
# 参加完秋招的机械人,还参加春招吗? #
20161次浏览 240人参与
# 我的上岸简历长这样 #
452091次浏览 8089人参与
牛客网
牛客企业服务