码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 2206 IP的计算

时间:2015-03-11 14:50:29      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:c++   算法   c   编程   数学   

一定要注意IP的长度不能超过15位。


方法一:

#include<iostream>  
using namespace std;

bool f(char* p)
{
    int state,sum;

    state=sum=0;
    while(true)
    {
        switch(state)
        {
        case 0:
        case 1:
        case 2:
            if(*p==NULL) return false;
            if(*p<='9' && *p>='0' || *p=='.')
            {
                if(*p=='.')
                {
                    if(sum<0 || sum>255) return false;
                    sum=0;
                    state++;
                }
                else
                    sum=sum*10+(*p-'0');
                p++;
            }
            else return false;
            break;

        case 3:
            if(*p<='9' && *p>='0' || *p=='.' || *p==NULL)
            {
                if(*p==NULL && *(p-1)=='.')
                    return false;
                else if(*p==NULL)
                {
                    if(sum<0 || sum>255) return false;
                    return true;
                }
                else
                    sum=sum*10+(*p-'0');
                p++;
            }
            else return false;
        }
    }
    return false;
}
  
int main()   
{   
    char a[101];

    while(gets(a))
    {
        if(f(a)&& strlen(a)<=15)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;  
}

方法二:利用sscanf判断,这种方法很简单。

#include<iostream>  
using namespace std;

bool r(int x)
{
    return x>=0&& x<=255?1:0;
}

int main()
{
    char ip[101];
    while(gets(ip))
    {
        int a,b,c,d;
        char tail;

        if(sscanf(ip, "%d.%d.%d.%d%c", &a, &b, &c, &d, &tail) == 4 &&!strchr(ip, '+') && strlen(ip)<=15)
        {
            if( r(a)&& r(b)&& r(c)&& r(d) ) 
                puts( "YES" ); 
            else
                puts( "NO" ); 
        }
        else
            puts( "NO" );
    }
    return 0;
}

HDU ACM 2206 IP的计算

标签:c++   算法   c   编程   数学   

原文地址:http://blog.csdn.net/a809146548/article/details/44198001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!