HzuWHF


私信TA

用户名:I7I08I9047

访问量:83377

签 名:

我RUN了

等  级
排  名 19
经  验 21269
参赛次数 13
文章发表 127
年  龄 3
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:

        自定义二级排序,优先比出生年月。

参考代码 ① :    

#include<bits/stdc++.h> /* 525 ms 使用 string */  
using namespace std;
const int len = 100010;

struct person {
	string num;
	string bro;
} datas[len];

int cmp(person perst, person pernd) {
	if (perst.bro == pernd.bro)
		return perst.num > pernd.num;
	else
		return perst.bro > pernd.bro;
}

int main() {
	int num; cin >> num;
	for (int i = 0; i < num; i++) {
		datas[i].num.resize(19);
		scanf("%s", &datas[i].num[0]);
		datas[i].bro = datas[i].num.substr(6, 8);
	}

	sort(datas, datas + num, cmp);
	for (int i = 0; i < num; i++)
		puts(datas[i].num.c_str());
}


参考代码 ② :    

#include<bits/stdc++.h> /* 176 ms 使用 C 风格字符串 */
using namespace std;
const int len = 100010;

struct person {
	char num[19];
	char bro[9];
} datas[len];

int cmp(person perst, person pernd) {
	if (!strcmp(perst.bro, pernd.bro))
		return strcmp(perst.num, pernd.num) > 0;
	else
		return strcmp(perst.bro, pernd.bro) > 0;
}

void cpy(char num[], char bro[]) {
	int bro_num = 6, index = 0;
	while (bro_num < 14)
		bro[index++] = num[bro_num++];
}

int main() {
	int num; scanf("%d", &num);
	for (int i = 0; i < num; i++) {
		scanf("%s", datas[i].num); cpy(datas[i].num, datas[i].bro);
	}

	sort(datas, datas + num, cmp);
	for (int i = 0; i < num; i++)
		puts(datas[i].num);
}


 

0.0分

9 人评分

  评论区

为啥适用string时间会比适用c风格耗时长啊
2023-02-12 15:46:05
  • «
  • 1
  • »