测试点3:
有效数据可能为0,此时正确的输出为0(注意不要输出多余的空格)
测试点4:
这个测试点主要卡最大年纪,注意自己的判断逻辑是否正确(详见注释),
给出几个不合法的测试用例:
测试用例一:输出为0(age=201)
1
xiaohao 1814/5/12测试用例二:输出为0(age=201)
1
xiaohao 1814/9/2
正确代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool is_valid(int year, int month, int day) {
if(year > 2014) return false;
else if(year == 2014 && month > 9) return false;
else if(year == 2014 && month == 9 && day > 6) return false;
else {
// 一开始判断最大年纪出错,导致测试点5错误
int age, t_month, t_day;
age = 2014 - year;
if(month < 9) age++;
else if(month == 9 && day < 6) age ++;
if(age > 200) return false;
}
return true;
}
// 等效写法 合法的年纪为 1814/9/6 ~ 2014/9/6
//bool is_valid(int year, int month, int day) {
// if(year > 2014) return false;
// else if(year == 2014 && month > 9) return false;
// else if(year == 2014 && month == 9 && day > 6) return false;
// else if(year < 1814) return false;
// else if(year == 1814 && month < 9) return false;
// else if(year == 1814 && month == 9 && day < 6) return false;
// return true;
//}
struct People{
string name;
int year, month, day;
};
bool cmp(People a, People b) {
if(a.year != b.year) return a.year < b.year;
else if(a.month != b.month) return a.month < b.month;
else return a.day < b.day;
}
int main() {
int n, year, month, day, count = 0;
string name;
vector<People> v;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> name;
People temp;
temp.name = name;
scanf("%d/%d/%d", &temp.year, &temp.month, &temp.day);
if(is_valid(temp.year, temp.month, temp.day)) {
v.push_back(temp);
count ++;
}
}
sort(v.begin(), v.end(), cmp);
cout << count;
if(count) cout << " " << v[0].name << " " << v[count - 1].name;
return 0;
}
#include<iostream>
using namespace std;
int main() {
string name, birth, maxbirth="1814/09/06", minbirth="2014/09/06", maxname, minname;
int n, cnt = 0;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> name >> birth;
if(birth >= "1814/09/06" && birth <= "2014/09/06") {
cnt ++;
if(birth > maxbirth) {
maxbirth = birth;
maxname = name;
}
if(birth < minbirth) {
minbirth = birth;
minname = name;
}
}
}
cout << cnt;
if(cnt) cout << " " << minname << " " << maxname;
return 0;
}