P124习题7.1
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int MAXN = 5000+10;
string sever[MAXN];//代理服务器
string client[MAXN];//代理服务器
int result = 0;
int clientnum;
int Findsever(int x,string s[],string str){//从x开始,寻找s[]中第一个出现str的位置
for (int i=x;i<clientnum;i++){
if (s[i] == str){return i;}
}
return MAXN;
}
int main(){
//freopen("D://case.txt","r",stdin);
int severnum;//代理服务器数目
//int clientnum;//客户机数目
cin>>severnum;
for (int i=0;i<severnum;i++){
cin>>sever[i];
}
cin>>clientnum;
for (int i=0;i<clientnum;i++){
cin>>client[i];
}
if (severnum == 1 && Findsever(0,client,sever[0])){cout<<"-1";return 0;}
int current = 0;//记录访问过多少个客户机
string s_before="";//防止两次走的最远的是相同服务器
while(current<=clientnum){
string s_now;
int index = 0;//记录现在最远的代理服务器
for (int i=0;i<severnum;i++){
int temp = Findsever(current,client,sever[i]);
if (temp>index && sever[i]!=s_before){//走的更远
//s_now = sever[i];
index = temp;
s_before = sever[i];
}
}
result++;//更换代理服务器
current = index+1;
}
cout<<result-1;
return 0;
}
P131习题7.2
牛客网BUG,打开是鸡兔同笼