顺丰科技2020校招 视觉算法笔试 2019.08.29

以下图片来源于牛客网牛友分享,侵删。
顺丰科技2020校招 视觉算法笔试 2019.08.29_第1张图片
只保存没有做过的题的编号和分值,然后sort。

#include
#include
#include
#include
using namespace std;


bool cmp(pair<char, int> a, pair<char, int> b) {
     
    if (a.second == b.second)
        return a.first < b.first;
    else
        return a.second > b.second;
}

int main()
{
     
    int n;
    cin >> n;
    string s;
    cin >> s;

    vector<pair<char, int>> nums;
    for (int i = 0; i < 13; ++i) {
     
        int score;
        cin >> score;
        char label = 'A' + i;
        if (s.find(label) != string::npos)
            continue;
        pair<char, int> b = {
      label, score };
        nums.push_back(b);
    }

    sort(nums.begin(), nums.end(), cmp);
    char res = nums[0].first;
    cout << res << endl;
    return 0;
}

顺丰科技2020校招 视觉算法笔试 2019.08.29_第2张图片
求解联通区域的个数,最终结果再减1。该代码未充分测试,仅供参考。

#include 
#include 
using namespace std;

void dfs(vector<vector<bool>>& nums, vector<bool>& seen, int start) {
     
    int r = nums.size();
    int c = nums[0].size();

    for (int j = 0; j < c; ++j) {
     
        if (nums[start][j] == false)
            continue;
        // 找到与start会相同语言j的
        for (int i = 0; i < r; ++i) {
     
            if (seen[i] == true)
                continue;
            if (nums[i][j] == true) {
     
                seen[i] = true;
                dfs(nums, seen, i);
            }
        }
    }
    return;
}

int main() {
     
/*
3 3 2
2 3
3 1
*/

    int n, m, k;
    cin >> n >> m >> k;
    vector<vector<bool>> nums(n, vector<bool>(m, false));
    for (int i = 0; i < k; ++i) {
     
        int person, lan;
        cin >> person >> lan;
        // true表示第i个人会第j种语言
        nums[person - 1][lan - 1] = true;
    }

    vector<bool> seen(n);
    int res = -1;
    for (int i = 0; i < n; ++i) {
     
        if (seen[i] == false) {
     
            dfs(nums, seen, i);
            ++res;
        }
    }
    cout << res << endl;
    return 0;
}

你可能感兴趣的:(笔试)