题解 | #代理服务器#

代理服务器

https://www.nowcoder.com/practice/1284469ee94a4762848816a42281a9e0

每次从代理列表中选取能“走”的最远的,每次的终点+1为下一次的起点,直至服务器列表遍历完

#include<iostream>
#include<vector>

using namespace std;
int getCount(vector<string>proxy, vector<string> server) {
    int count = 0;
    int index = 0;//server起始位置
    int jump = 0; //使用一个代理最多能访问多少服务器
    for ( ; index < server.size(); index += jump) {
        jump = 0;
        for (auto item : proxy) {
            int j = index;
            while (item != server[j] && j < server.size()) {
                j++;

            }
            jump = max(jump, j - index);
        }
        if (jump == 0) return -1;
        count++;
    }

    return count - 1;
}
int  main() {
    int proxyNum;
    while (cin >> proxyNum) {
        int serverNum;
        vector<string> proxy;
        vector<string> server;
        for (int i = 0; i < proxyNum; i++) {
            string temp;
            cin >> temp;
            proxy.push_back(temp);
        }
        cin >> serverNum;
        for (int i = 0; i < serverNum; i++) {
            string temp;
            cin >> temp;
            server.push_back(temp);
        }
        int count = getCount(proxy,  server);
        cout << count << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务