您的位置:首页 > 其它

hdu 2206 IP的计算

2013-02-15 12:15 399 查看
A的很是狼狈;

给一些测试数据吧:

123.00123.123.123 YES

123.123.0.123 YES

123.123..123 NO

a12.123.123.123 NO

123.123.123.256 NO

#include<iostream>
#include<string>
using namespace std;
char a[110];
int b[110];

int main()
{
while(gets(a) != NULL)
{
int l, i, j;
bool pp = false;
l = strlen(a);
a[l] = '.';
a[l+1] = NULL;

int k = 0;
for(i = 0; i <= l; i++)
{
if(a[i] == '.')
b[k++] = i;
if(k > 4)
{
pp = true;break;
}
if(a[i] < '0' || a[i] > '9')
{
if(a[i] != '.')
{
pp = true;break;
}
}

}
if(i > l && k < 4)
pp = true;

if(b[0] > 3)
pp = true;
for(i = 1; i < 4; i++)
{
if(a[i] - a[i]-1 > 4)
{
pp = true;break;
}
}

int num = 0;
for(i = 0; i < b[0]; i++)
{
num *= 10;
num += a[i] - '0';
}
if(num > 255)
pp = true;

if(pp == true)
{
printf("NO\n");continue;
}

k = 0;
for(j = 0; j < 3; j++, k++)
{
num = 0;
if(b[k+1] - b[k] == 1)
{
printf("NO\n");break;
}
for(i = b[k]+1; i < b[k+1]; i++)
{
num *= 10;
num += a[i] - '0';
}
if(num > 255)
{
printf("NO\n");break;
}
}
if(j >= 3)
printf("YES\n");

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: