求出每个服务从当前位置继续访问的最多数目,然后用最大的访问。每次都循环一遍,求出最大的。
#include<stdio.h>
#include<string.h>
int main(){
char proxy[1000][16];
char server[5000][16];
int n,m;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%s",proxy[i]);
scanf("%d",&m);
for(int i=0;i<m;i++)
scanf("%s",server[i]);
int index,max,count;
index=max=count=0;
int flag=1;
while(index!=m){
for(int i=0;i<n;i++){
int temp=index;
while(strcmp(proxy[i],server[temp])&&temp<m)
temp++;
if(max<temp-index)
max=temp-index;
}
if(max==0){
break;
flag=0;
}
index+=max;
max=0;
count++;
}
if(!flag)
printf("-1");
else
printf("%d",count-1);
}
网友评论