贪心算法-代理服务器

求出每个服务从当前位置继续访问的最多数目,然后用最大的访问。每次都循环一遍,求出最大的。

#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);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容