如果我把我的代码改成:
#include<bits/stdc++.h>
using namespace std;
map<string,int> mp;
int check(string s)
{
int hvs=0,hvb=0,hvm=0;
int x=0;
int sl=s.length();
// int flag=0;
for(int i=0;i<sl;i++)
{
if(s[i]>='0'&&s[i]<='9')
{
// if(hvm==1)flag=1;
x*=10;
x+=s[i]-'0';
if((hvs<=3&&x>=256)||(x==0&&((i>0&&s[i-1]>='0'&&s[i-1]<='9')||(i<sl-1&&s[i+1]>='0'&&s[i+1]<='9')))||(hvs<=4&&x>=65536)||hvs>=5)return 0;
}
else if(s[i]=='.')
{
if(i==0)return 0;
if(s[i-1]=='.')return 0;
hvs++;
hvb++;
if(hvm>=1)return 0;
x=0;
}
else if(s[i]==':')
{
if(hvb<3)return 0;
hvm++;
hvs++;
x=0;
}
else return 0;
}
hvs++;
// hvs+=flag;
if(hvs!=5||hvb!=3||hvm!=1)return 0;
return 1;
}
int main()
{
int n;
cin>>n;
string s,ip;
for(int i=1;i<=n;i++)
{
cin>>s>>ip;
if(!check(ip))
{
puts("ERR");
continue;
}
if(s=="Server")
{
if(mp[ip]!=0)puts("FAIL");
else mp[ip]=i,puts("OK");
}
else if(s=="Client")
{
if(mp[ip]==0)puts("FAIL");
else printf("%d\n",mp[ip]);
}
}
return 0;
}
那么下面这组数据输出是"OK"
1
Server 1.1.1.1:
但这很明显是ERR 但我交了这份代码就AC了