A problem of sorting
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 240 Accepted Submission(s): 115
For each test case, there is an positive integer n(1≤n≤100) which denotes the number of people,and next n lines,each line has a name and a birth's year(1900-2015) separated by one space.
The length of name is positive and not larger than 100.Notice name only contain letter(s),digit(s) and space(s).
2 1 FancyCoder 1996 2 FancyCoder 1996 xyz111 1997
FancyCoder xyz111 FancyCoder
简单的模拟,注意名字中含有空格,gets()函数就搞定,还有pow()函数原型也要注意一下。
AC代码:
#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
#include "cmath"
using namespace std;
const int MAXN = 105;
struct node
{
/* data */
char name[200];
int age;
}a[MAXN];
bool cmp(node a, node b)
{
return a.age > b.age;
}
int main(int argc, char const *argv[])
{
int t;
scanf("%d", &t);
for(int cas = 0; cas < t; ++cas) {
memset(a, 0, sizeof(a));
int n;
cin >> n;
getchar();
for(int i = 0; i < n; ++i) {
gets(a[i].name);
int len = strlen(a[i].name), num = 0;
for(int j = len - 1; j >= len - 4; --j)
a[i].age += ((int)(pow(10.0, num++))) * (a[i].name[j] - '0');
}
sort(a, a + n, cmp);
for(int i = 0; i < n; ++i) {
int len = strlen(a[i].name);
a[i].name[len - 5] = '\0';
printf("%s\n", a[i].name);
}
}
return 0;
}
842



被折叠的 条评论
为什么被折叠?



