http://code.bupt.edu.cn/problem/p/101/
#include<stdio.h>
#include<string>
#include<vector>
#include<sstream>
using namespace std;
int C(string s)
{
int len=s.length();
if(len==0)
return 0;//空串不合法
else
{
int ans=1;
for(int i=0;i<len&&ans==1;i++)
{
if('0'<=s[i]&&s[i]<='9')
;
else
ans=0;
}//截取出来的字符串含有不是数字的不合法
if(ans==1)
{
stringstream ost;
ost<<s;
int num;
ost>>num;
if(0<=num&&num<=255)//不在0-255之间不合法
;
else
ans=0;
}
return ans;
}
}
int main()
{
int n;
//while(scanf("%d",&n)!=EOF)
scanf("%d",&n);
for(int k=1;k<=n;k++)
{
getchar();
char ss[50];
scanf("%s",ss);
string s=ss;
int len=s.length();
int ans=1;//标记是否合法
int num=0;
for(int i=0;i<len;i++)
if(s[i]=='.')
num++;
if(num!=3)
ans=0;//要有三个.才是合法
if(ans==1)//有三个.了,把4个字符串截取到vector里
{
int f=0;
int l=0;
vector<string> v;
while(l<len)
{
if(s[l]=='.')
{
string tmp=s.substr(f,l-f);
v.push_back(tmp);
f=l+1;
l++;
}
else
l++;
}
string tmp=s.substr(f,l-f);
v.push_back(tmp);
for(int i=0;i<4&&ans==1;i++)//依次判断4个字符串是否合法
if(C(v[i])==0)
ans=0;
}
if(ans==1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}