程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> IP的計算------HDOJ杭電2206(寫完腦洞大開,想象力要足夠豐富)

IP的計算------HDOJ杭電2206(寫完腦洞大開,想象力要足夠豐富)

編輯:C++入門知識

IP的計算------HDOJ杭電2206(寫完腦洞大開,想象力要足夠豐富)


Problem Description 在網絡課程上,我學到了很多有關IP的知識。IP全稱叫網際協議,有時我們又用IP來指代我們的IP網絡地址,現在IPV4下用一個32位無符號整數來表示,一般用點分方式來顯示,點將IP地址分成4個部分,每個部分為8位,表示成一個無符號整數(因此不需要用正號出現),如192.168.100.16,是我們非常熟悉的IP地址,一個IP地址串中沒有空格出現(因為要表示成一個32數字)。
但是粗心的我,常常將IP地址寫錯,現在需要你用程序來判斷。

Input 輸入有多個case,每個case有一行,不超過100個字符。
Output 對於每個case,判斷輸入的IP是否正確,如果正確輸入YES,否則NO。
Sample Input
192.168.100.16

Sample Output
YES
這題真的真的真的是超級挑戰一個人的想象力!!!!!! 寫完已跪!!!!!! 總結一下: 1.首先不能有空格 2.然後要有三個小數點 3.開頭和結尾不能有小數點 4.小數點不能連續 5.兩個小數點間的數字不能超過255,可以等於255,因為是2的8次方,是256,但是計數從0開始,所以最大只有255 6.舉幾個例子: 000.000.000.000 YES 0.0.0.0 YES 010.00.00.00 YES 255.256.255.255 NO 自己看看這幾組過了沒有 但是有一種情況我沒有考慮,但是代碼AC了,測試數據應該沒有這種情況,所以我不敢判斷對錯 0000.0.0.0 這有一個區間的位數大於3,根據題意也沒法推斷出對錯,所以就放著吧,反正測試數據沒有這樣的例子。 其實這種腦洞大開的題目杭電真的好多,最近一直在找。
#include
#include
#include
#include
#include
using namespace std;

#define maxn 10000 + 6
char six[maxn];
char xp[maxn];
int liu[maxn];

int calcu(char s[])
{
    int len=strlen(s);
    int sum=0;
    for(int i=0;i15)                       ///最小和最大長度
        {
            printf("NO\n");
            continue;
        }
        if(six[0]=='.'||six[len-1]=='.')        ///判斷頭尾有無dot
        {
            printf("NO\n");
            continue;
        }
        int flag=1;
        for(i=0;i'9')&&six[i]!='.')
            {
                flag=0;
                break;
            }
        }
        if(flag==0)
        {
             printf("NO\n");
             continue;
        }
        m=0;
        for(i=0;i3||len-1-liu[2]>3)
        {
            printf("NO\n");
            continue;
        }
        if(liu[1]-liu[0]>4||liu[1]-liu[0]==1||liu[2]-liu[1]>4||liu[2]-liu[1]==1)
        {
            printf("NO\n");
            continue;
        }*/
        char l1[6]={},l2[6]={},l3[6]={},l4[6]={};
        flag=0;
        for(i=0;i255||calcu(l2)>255||calcu(l3)>255||calcu(l4)>255)
            flag=1;
        if(flag)
        {
            printf("NO\n");
            continue;
        }
        printf("YES\n");
    }
    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved