代理服务器-贪心算法
上文鏈接: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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代理工具及使用技巧Proxy Hunte
- 下一篇: 陈平原:《阅读大学的六种方式》[转]