麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

算法競賽入門經典 第二版 習題4-5 IP網絡 IP Networks uva1590

2019-11-14 12:34:53
字體:
來源:轉載
供稿:網友

題目:https://vjudge.net/PRoblem/UVA-1590

聽說這題用位運算能大幅簡化,奈何我不會用。

思路:既然要找個最小范圍,自然要知道上限下限,找出最大的ip和最小的ip,然后轉換成二進制,比對這兩個ip的二進制,找出第一個不相同的位置。在這個位置之前的二進制位最小的不變,最大的賦值為1;在這個位置之后的每個二進制位(包括這個位置),將兩ip都賦值為0。再將處理后的這兩個ip轉換回十進制。那么原來最小的ip就成了網絡地址(network address),原來最大的ip就成了子網掩碼(network mask)。

語言:c++

#include <cstdio>#include <iostream>#include <cctype>#include <cmath>#include <cstring>using namespace std;struct IP{ int ten[4];//保存十進制形式 char two[4][8];//保存二進制形式,用char類型只是為了省空間};bool isbigger(IP a, IP b)//定義IP大于的比較規則{ int i; for(i=0; i<4; i++) { if(a.ten[i]>b.ten[i]) { return true; } else if(a.ten[i]<b.ten[i]) { return false; } } return false;}bool issmaller(IP a, IP b)//定義IP小于的比較規則{ int i; for(i=0; i<4; i++) { if(a.ten[i]<b.ten[i]) { return true; } else if(a.ten[i]>b.ten[i]) { return false; } } return false;}void change(IP &a)//將十進制轉換為二進制{ int i, j, temp; memset(a.two, 0, sizeof(a.two)); for(i=0; i<4; i++) { temp = a.ten[i]; for(j=7; j>=0; j--) { if(temp==0) { break; } a.two[i][j] = temp % 2; temp /= 2; } }}void rechange(IP &a)//將二進制轉換為十進制{ memset(a.ten, 0, sizeof(a.ten)); int i, j; for(i=0; i<4; i++) { for(j=0; j<8; j++) { a.ten[i] *= 2; a.ten[i] += a.two[i][j]; } }}void check(IP &minn, IP &maxx)//比對處理函數{ int i, j; bool t=false; for(i=0; i<4; i++) { for(j=0; j<8; j++) { if(t) { minn.two[i][j] = 0; maxx.two[i][j] = 0; } else { if(minn.two[i][j]!=maxx.two[i][j]) { t = true; minn.two[i][j] = 0; maxx.two[i][j] = 0; } else { maxx.two[i][j] = 1; } } } }}void print(IP a){ int i,j; printf("%d.%d.%d.%d/n", a.ten[0], a.ten[1], a.ten[2], a.ten[3]);}int main(){ IP temp, maxx, minn; int i, j, n; while(scanf("%d", &n)!=EOF) { for(i=0; i<n; i++) { for(j=0; j<4; j++) { scanf("%d%*c", &temp.ten[j]); } if(i==0) { maxx = temp; minn = temp; } else { if(isbigger(temp, maxx)) { maxx = temp; } if(issmaller(temp, minn)) { minn = temp; } } } change(minn); change(maxx); check(minn, maxx); rechange(minn); rechange(maxx); print(minn); print(maxx); } return 0;}
上一篇:脫殼-Armadillo1.x

下一篇:java 訪問修飾符

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人一级黄色片 | 美女羞羞视频网站 | japanesexxxxxxxhd | 国产一区网址 | 视频www| 麻豆蜜桃在线观看 | 欧美成人免费 | av中文在线观看 | 欧美日韩免费在线观看视频 | 国产三级在线观看a | 国产99视频在线观看 | 国产99久久精品一区二区300 | 欧美一级高潮片免费的 | 狠狠久久伊人中文字幕 | 伊人99re | 91av网址 | 黄色毛片视频在线观看 | 欧美一级一区二区三区 | 欧美视频一区二区 | 久久精品亚洲一区 | 精精国产xxxx视频在线野外 | 国产精品久久久久一区二区 | 午夜精品成人 | 亚洲一级片免费观看 | 国产无遮挡一级毛片 | 免费观看在线 | 黑人一区二区三区四区五区 | 久久激情国产 | 在线播放视频一区二区 | 国产一级毛片不卡 | 亚洲精品久久久久久久久久 | 免费亚洲视频在线观看 | 亚洲第一视频 | 色综合久久久久久久久久 | 国产成人精品二区 | 羞羞视频免费网站含羞草 | h视频在线观看免费 | 草草久 | 国产一级免费不卡 | 成av人在线观看 | 国产精品久久久久久238 |