上文链接:https://blog.csdn.net/slient_love/article/details/104311852

代理服务器-贪心算法

题目描述

使用代理服务器能够在一定程度上隐藏客户端信息,从而保护用户在互联网上的隐私。我们知道n个代理服务器的IP地址,现在要用它们去访问m个服务器。这 m 个服务器的 IP 地址和访问顺序也已经给出。系统在同一时刻只能使用一个代理服务器,并要求不能用代理服务器去访问和它 IP地址相同的服务器(不然客户端信息很有可能就会被泄露)。在这样的条件下,找到一种使用代理服务器的方案,使得代理服务器切换的次数尽可能得少。

输入描述:

每个测试数据包括 n + m + 2 行。
第 1 行只包含一个整数 n,表示代理服务器的个数。
第 2行至第n + 1行每行是一个字符串,表示代理服务器的 IP地址。这n个 IP地址两两不相同。
第 n + 2 行只包含一个整数 m,表示要访问的服务器的个数。
第 n + 3 行至第 n + m + 2 行每行是一个字符串,表示要访问的服务器的 IP 地址,按照访问的顺序给出。
每个字符串都是合法的IP地址,形式为“xxx.yyy.zzz.www”,其中任何一部分均是0–255之间的整数。输入数据的任何一行都不包含空格字符。
其中,1<=n<=1000,1<=m<=5000。

输出描述:

可能有多组测试数据,对于每组输入数据, 输出数据只有一行,包含一个整数s,表示按照要求访问服务器的过程中切换代理服务器的最少次数。第一次使用的代理服务器不计入切换次数中。若没有符合要求的安排方式,则输出-1。

示例:

输入:

3
166.111.4.100
162.105.131.113
202.112.128.69
6
72.14.235.104
166.111.4.100
207.46.19.190
202.112.128.69
162.105.131.113
118.214.226.52

输出:

1
做题思路:

此题用贪心算法比较好解。由题意可知,只有当N=1时,且代理服务器的IP地址在服务器IP地址队列中时,输出才为“-1”。

代码展示:
#include<stdio.h>
#include<string.h>
#include <iostream>
using namespace std;//每次调用,在目标串中找最长可以访问到的结点,从该结点开始再往后找最长
int solve(char a[1000][16],int n,char b[5000][16],int m)
{int i,j;int max=-1;//max为该代理服务器可以访问的最多个数-1//双层for循环用来判断该代理服务器是否可以访问完所有的服务器,若不能则得出可以访问到的最长节点for(i=0;i<n;i++){for(j=0;j<m;j++){if(!strcmp(a[i],b[j])){//相等if(max<j)max=j;break;}}if(j == m)return 0;}//该种情况表示只有一个代理服务器,并且该代理服务器的IP地址与服务器的IP地址有一样的if(n==1&&max!=-1)return -1;//切换一次代理服务器地址return 1+solve(a,n,b+max,m-max);
}int main()
{int n,m;while(cin>>n){char a[n][16];for(int i = 0;i <n ;i++)cin>>a[i];cin>>m;char b[m][16];for(int i = 0;i <m ;i++)cin>>b[i];cout<<solve(a,n,b,m);}return 0;
}
strcmp函数:

头文件: string.h

strcmp(const char *s1,const char * s2)

规则

当s1<s2时,返回为负数;

当s1==s2时,返回值= 0;

当s1>s2时,返回正数。

特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

代理服务器-贪心算法相关推荐

  1. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  2. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  3. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  4. 一份贪心算法区间调度问题解法攻略,拿走不谢

    作者 | labuladong 来源 | labuladong(ID:labuladong) [导读]什么是贪心算法呢?贪心算法可以认为是动态规划算法的一个特例,相比动态规划,使用贪心算法需要满足更多 ...

  5. 漫画:五分钟学会贪心算法!

    假设一个问题比较复杂,暂时找不到全局最优解,那么我们可以考虑把原问题拆成几个小问题(分而治之思想),分别求每个小问题的最优解,再把这些"局部最优解"叠起来,就"当作&qu ...

  6. 下载插件(贪心算法)

    小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载.假定每分钟选择以下两种策略之一: 使用当前带宽下载插件 将带宽加倍(下载插件数量随之加倍) 请返回小扣完 ...

  7. Runnable接口和贪心算法

    1 Runnable接口 Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现.设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议.激活的意思是说某个线程已启动并且尚未停止 ...

  8. 拜托,别再问我贪心算法了!

    来自:码海 前言 上篇一文学会动态规划解题技巧 被不少号转载了,其中发现有一位读者提了一个疑惑,在求三角形最短路径和时,能否用贪心算法求解.所以本文打算对贪心算法进行简单地介绍,介绍完之后我们再来看看 ...

  9. Dijkstra 贪心算法 动态规划

    我认为 Dijkstra算法 的本质是 广度优先搜索, 而此处的广度是定义在路程的cost之上的. (就好比从圆心处向外扩散一个圆环,首次碰到的就是最近) 动态规划泛指,重叠子问题与原问题的推算关系( ...

  10. 三十六、贪心算法--集合覆盖问题

    一.贪心算法介绍 1.贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 2.贪心算法不是对所有问题都 ...

最新文章

  1. 一群算法_树遍历解释:他们就像一群懒惰的学生,试图欺骗他们的考试
  2. 基于SSM实现健康食品零售网站
  3. python 面向对象:类,作用域
  4. TACACS 协议简介与开发总结
  5. matlab无限长序列卷积,怎样求未知长度序列的卷积
  6. VTK:可视化算法之ClipSphereCylinder
  7. Java和Python中类似Kotlin的生成器,续:附加参数
  8. React开发(240):dva概念5reducer
  9. 重庆师范大学第一届ACM选拔赛(公开赛)G-团日活动
  10. 语言 物品竞拍系统_整理家务不用愁!HSR家庭自主整理机器人系统
  11. 软件工程学习进度第七周暨暑期学习进度之第七周汇总
  12. java正则表达式验证_Java中的正则表达式电话号码验证
  13. stl中auto_ptr,unique_ptr,shared_ptr,weak_ptr四种智能指针使用总结
  14. JSON字符串和JSON对象的相互转换
  15. 怎么把证件照背景换成蓝色?一键更换照片背景
  16. 在ASP.NET Core中如何将各种文档合并为PDF?Aspose快速搞定!
  17. 【渗透测试】靶机渗透Vulnhub-bulldog
  18. 【C++ STL应用与实现】23: 如何使用std::mem_fn (since C++11)
  19. 4G图传移动视频取证-可视安全生产监管-常见问题解答FAQ-1,C/S客户端软件常用操作
  20. ChatGPT专业应用:生成行业分析报告

热门文章

  1. 苹果7信号天线内部位置_苹果7信号天线内部位置_除了芯片还有天线!手机后壳换玻璃也是为5G准备...
  2. python句柄无效_python免注册调用大漠出现错误句柄无效
  3. SQL数据库置疑修复
  4. C++打印ASCLL码表
  5. PaddleOCR实现车牌识别系统
  6. 01 GOF设计模式的定义和分类
  7. 在ArcMap离线加载海量卫星影像的方法
  8. 代码整洁之道—技术分享
  9. 科技爱好者周刊:第 91 期
  10. EGE示例程序——2048