本文主要是介绍HDU 2206 IP的计算 WA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
还是WA......我心已碎
先留着wa的
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
#define MAX 1050int main()
{char v[MAX];while(gets(v)){int i, start, flag = 1, point = 1, head = 0, sum = 0, cnt_p = 0;for(start = 0; v[start] == ' '; start++); // 去前导空格if((strlen(v) - start) > 15){cout << "NO" << endl;continue;}for(i = start; i < strlen(v); i++){if(sum > 255){flag = 0;break;}if((i == start && v[i] == '.') || (i == start && v[i] == '0')){ // 首位'.' or 首位'0'flag = 0;break;}else if(v[i] == '0' && (!point && !head)){flag = 0;break;}else if(v[i] == '.'){if(v[i+1] == '.') // 10...{flag = 0;break;}point = 1;cnt_p++; // '.'计数sum = 0;head = 0; // 0 之前是否有非零数}else if(v[i] >= '0' && v[i] <= '9'){if(!head && !sum && !point)// 10.01.01.01{flag = 0;break;}if(v[i]-'0' > 0)head = 1;sum = sum*10 + v[i]-'0';point = 0;}else // 不能有其他字符出现{flag = 0;break;}//if((i+1) == strlen(v) && v[i] == '.')//10.0.0.避免最后一个无数字{flag = 0;break;}}if(sum > 255)//最后一组没有判断flag = 0;if(flag && cnt_p == 3)cout << "YES" << endl;elsecout << "NO" << endl;memset(v, '\0', MAX);}
}
这篇关于HDU 2206 IP的计算 WA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!