我的思路:
现有问题:
我的代码:
#include <bits/stdc++.h>
using namespace std;
int x[10];
string a;
bool cmp(string a) {
int cnt = 1, len = a.length(), dt = 0, mh = 0;
for (int i = 0; i < len; i++) {
if (a[i] >= '0' && a[i] <= '9') {
if (x[cnt] == 0 && a[i] == '0') return false;
x[cnt] = x[cnt] * 10 + a[i] - '0';
} else {
if (a[i] == '.') dt++;
else mh++;
if (cnt >= 1 && cnt <= 3) {
if (a[i] != '.') return false;
} else if (cnt == 4) if (a[i] != ':') return false;
}
}
for (int i = 0; i < 4; i++) {
if (x[i] > 255) return false;
}
if (x[4] > 65535) return false;
if (cnt > 5) return false;
if (dt != 3) return false;
if (mh != 1) return false;
return true;
}
int n;
vector<string> s;
bool find(string a) {
for (int i = 0; i < s.size(); i++) {
if (s[i] == a) return true;
}
return false;
}
int num(string a) {
for (int i = 0; i < s.size(); i++) {
if (s[i] == a) return i + 1;
}
return 0;
}
int main() {
freopen("network.in", "r", stdin);
freopen("network.out", "w", stdout);
cin >> n;
for (int i = 0; i < n; i++) {
string type;
cin >> type;
if (type == "Server") {
string ip;
cin >> ip;
if (cmp(ip)) {
cout << "ERR" << endl;
} else if (find(ip)) {
cout << "FAIL" << endl;
} else {
cout << "OK" << endl;
s.push_back(ip);
}
} else {
string ip;
cin >> ip;
if (cmp(ip)) {
cout << "ERR" << endl;
} else if (!find(ip)) {
cout << "FAIL" << endl;
} else {
cout << num(ip) << endl;
}
}
}
return 0;
}
我的测试数据:
5
Server 192.168.1.1:8080
Server 192.168.1.1:8080
Client 192.168.1.1:8080
Client 192.168.1.1:80
Client 192.168.1.1:99999
预期输出:
OK
FAIL
1
FAIL
ERR
我的输出:
OK
FAIL
1
FAIL
FAIL
得分:0