但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。
Input 输入有多个case,每个case有一行,不超过100个字符。
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;i 15) ///最小和最大长度 { 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;i 3||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;i 255||calcu(l2)>255||calcu(l3)>255||calcu(l4)>255) flag=1; if(flag) { printf("NO\n"); continue; } printf("YES\n"); } return 0; }