日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代理服务器-贪心算法

發(fā)布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代理服务器-贪心算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

代理服務(wù)器-貪心算法

題目描述

使用代理服務(wù)器能夠在一定程度上隱藏客戶端信息,從而保護(hù)用戶在互聯(lián)網(wǎng)上的隱私。我們知道n個代理服務(wù)器的IP地址,現(xiàn)在要用它們?nèi)ピL問m個服務(wù)器。這 m 個服務(wù)器的 IP 地址和訪問順序也已經(jīng)給出。系統(tǒng)在同一時刻只能使用一個代理服務(wù)器,并要求不能用代理服務(wù)器去訪問和它 IP地址相同的服務(wù)器(不然客戶端信息很有可能就會被泄露)。在這樣的條件下,找到一種使用代理服務(wù)器的方案,使得代理服務(wù)器切換的次數(shù)盡可能得少。

輸入描述:

每個測試數(shù)據(jù)包括 n + m + 2 行。
第 1 行只包含一個整數(shù) n,表示代理服務(wù)器的個數(shù)。
第 2行至第n + 1行每行是一個字符串,表示代理服務(wù)器的 IP地址。這n個 IP地址兩兩不相同。
第 n + 2 行只包含一個整數(shù) m,表示要訪問的服務(wù)器的個數(shù)。
第 n + 3 行至第 n + m + 2 行每行是一個字符串,表示要訪問的服務(wù)器的 IP 地址,按照訪問的順序給出。
每個字符串都是合法的IP地址,形式為“xxx.yyy.zzz.www”,其中任何一部分均是0–255之間的整數(shù)。輸入數(shù)據(jù)的任何一行都不包含空格字符。
其中,1<=n<=1000,1<=m<=5000。

輸出描述:

可能有多組測試數(shù)據(jù),對于每組輸入數(shù)據(jù), 輸出數(shù)據(jù)只有一行,包含一個整數(shù)s,表示按照要求訪問服務(wù)器的過程中切換代理服務(wù)器的最少次數(shù)。第一次使用的代理服務(wù)器不計入切換次數(shù)中。若沒有符合要求的安排方式,則輸出-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
做題思路:

此題用貪心算法比較好解。由題意可知,只有當(dāng)N=1時,且代理服務(wù)器的IP地址在服務(wù)器IP地址隊列中時,輸出才為“-1”。

代碼展示:
#include<stdio.h> #include<string.h> #include <iostream> using namespace std;//每次調(diào)用,在目標(biāo)串中找最長可以訪問到的結(jié)點,從該結(jié)點開始再往后找最長 int solve(char a[1000][16],int n,char b[5000][16],int m) {int i,j;int max=-1;//max為該代理服務(wù)器可以訪問的最多個數(shù)-1//雙層for循環(huán)用來判斷該代理服務(wù)器是否可以訪問完所有的服務(wù)器,若不能則得出可以訪問到的最長節(jié)點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;}//該種情況表示只有一個代理服務(wù)器,并且該代理服務(wù)器的IP地址與服務(wù)器的IP地址有一樣的if(n==1&&max!=-1)return -1;//切換一次代理服務(wù)器地址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函數(shù):

頭文件: string.h

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

規(guī)則

當(dāng)s1<s2時,返回為負(fù)數(shù);

當(dāng)s1==s2時,返回值= 0;

當(dāng)s1>s2時,返回正數(shù)。

特別注意:strcmp(const char *s1,const char * s2)這里面只能比較字符串,即可用于比較兩個字符串常量,或比較數(shù)組和字符串常量,不能比較數(shù)字等其他形式的參數(shù)。

總結(jié)

以上是生活随笔為你收集整理的代理服务器-贪心算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。