检查了代码,应该都初始化了啊!
求大佬帮忙检查一下,谢谢。



#include <bits/stdc++.h>
#define int long long
using namespace std;
bool check(string s)
{
int cnt=0,sum=0,tim=0;
for(int i=0;i<s.length();i++){
if(s[i]=='.'){
if(tim>=3) return false;
if(cnt>255) return false;
if(cnt==0&&sum==0) return false;
if(cnt==0&&sum>=2) return false;
if(cnt!=0&&sum) return false;
cnt=0,sum=0,tim++;
}
else if(s[i]==':'){
if(tim!=3) return false;
if(cnt>255) return false;
if(cnt==0&&sum==0) return false;
if(cnt==0&&sum>=2) return false;
if(cnt!=0&&sum) return false;
cnt=0,sum=0,tim++;
}
else {
if(s[i]=='0'&&!cnt) sum++;
cnt=cnt*10+s[i]-'0';
}
}
if(tim!=4) return false;
if(cnt>65535) return false;
if(cnt==0&&sum>=2) return false;
if(cnt==0&&sum==0) return false;
if(cnt!=0&&sum) return false;
return true;
}
int a[1005][7],head;
int b[5];
signed main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
int q;cin>>q;
int now=0;
while(q--)
{
now++;
string opt;cin>>opt;
string s;cin>>s;
if(!check(s)){cout<<"ERR"<<endl;continue;}
if(opt=="Server"){
int tmp=0,cnt=0;
for(int i=0;i<s.length();i++){
if(s[i]=='.'||s[i]==':') b[cnt++]=tmp,tmp=0;
else tmp=tmp*10+s[i]-'0';
}
b[cnt]=tmp;
bool flag=true;
for(int i=1;i<=head;i++){
bool flag1=true;
for(int j=0;j<6;j++){
if(a[i][j]!=b[j]) flag1=false;
}
if(flag1) {flag=false;break;}
}
if(!flag) {cout<<"FAIL"<<endl;continue;}
head++;
for(int i=0;i<6;i++) a[head][i]=b[i];
a[head][6]=now;
cout<<"OK"<<endl;
}
else {
int tmp=0,cnt=0;
for(int i=0;i<s.length();i++){
if(s[i]=='.'||s[i]==':') b[cnt++]=tmp,tmp=0;
else tmp=tmp*10+s[i]-'0';
}
b[cnt]=tmp;
int flag=-1;
for(int i=1;i<=head;i++){
bool flag1=true;
for(int j=0;j<6;j++){
if(a[i][j]!=b[j]) flag1=false;
}
if(flag1) {flag=i;break;}
}
if(flag==-1) {cout<<"FAIL"<<endl;continue;}
cout<<a[flag][6]<<endl;
}
}
return 0;
}
求大佬帮忙调一下!!