题解 | #代理服务器#
代理服务器
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")
查看12道真题和解析
