首页 > 百度笔试914,运维开发第二题
头像
小太阳201904241405396
编辑于 2020-09-14 23:24
+ 关注

百度笔试914,运维开发第二题

百度笔试914,运维开发第二题代码
#include <iostream>
#include<vector>
using namespace std;

int main() {
    int output;
    vector<vector<int> > res;
    vector<vector<char> > contain;
    int n, m;
    int min, max;
    cin >> n >> m;
    char query;
    for (int i = 0; i < m; i++) {
        vector<char> con1;
        for (int j = 0; j < 3; j++) {
            cin >> query;
            con1.push_back(query);
        }
        contain.push_back(con1);
    }
    
    for (int i = 0; i < n; i++) {
        vector<int> con;
        int temp;
        con.push_back(i + 1);
        con.push_back(i+1);
        res.push_back(con);
   }
//截至到这里都是在存储输入数据,下面对输入进行处理;
//分两种情况,一个是发指令,一个是询问。
    int a, b;
    for (int i = 0; i < m; i++) {
        if (contain[i][0] == 'C') {
            a = int(contain[i][1]-'0');
            b = int(contain[i][2]-'0');
            for (int i = 1; i < res[a - 1].size(); i++) {
                res[b - 1].push_back(res[a - 1][i]);
            }
        } 
        else if(contain[i][0] == 'Q') {
            output = -1;
            max = min = 0;
            a = int(contain[i][1]-'0');
            b = int(contain[i][2]-'0');
            for (int j = 0; j < n; j++) {
                if (res[j].size() != 2) {
                    for (int i = 1; i < res[j].size(); i++) {
                        if (res[j][i] == a)   min = i;
                        else if (res[j][i] == b) max = i;
                        if (min != 0 && max != 0) output= abs(min - max)-1;
                    }
                    if (output != -1) {
                        cout << output << endl;
                        break;
                    
                    }
                }
                if (j == n - 1) cout << -1 << endl;
            }
        }
    }
    return 0;
}
第一题暴力查找,时间超限制,求简便方法

全部评论

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

推荐话题

相关热帖

近期热帖

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

近期精华帖

热门推荐