文章

16

粉丝

66

获赞

4

访问

9.1k

头像
国家名称排序 题解:
P5125
发布于2024年3月31日 00:29
阅读数 418

N诺的编辑器太难用,格式会很乱,我的博客有这篇题解更友好的排版,欢迎点击链接查看。

博客链接

## 分析
一开始打算用二维的字符数组来操作,但是数组指针玩不太明白,于是改用结构体,结构体country里面仅一个成员name(字符数组),这样就有两种解题方法:
### 方法一:使用sort排序
- 创建一个country数组cry,大小为101(因为n最大为100)
- 输入的国家名称放到country数组cry元素对应的name属性里面
- 使用sort对country数组cry进行排序,注意,传入的三个参数如下,分别为country数组的首指针、尾后指针和排序函数名cmp

```c++
        sort(&cry[0], &cry[n], cmp);
```

- 关于cmp函数的编写,是基于sort函数的特性,即两个待排的元素a,b,注意a和b都是country类型的,
    - 如果cmp(a,b)的值是true则不交换顺序,如果是false则交换顺序,
    - 再基于本题的要求,按照strcmp(a.name,b.name)判断字符串的大小即可,
        - 如果a.name的字母序数大于b.name,那么strcmp(a.name,b.name)值为正数
        - 如果a.name的字母序数小于或等于b.name,那么strcmp(a.name,b.name)值为负数或0
    - 那么,就应该在a.name的字母序数小于或等于b.name的时候,让cmp函数返回true,表示不用交换,否则就要交换。

#### 方法一::使用sort排序(代码)

```cpp
#include <cstdio>
#include <queue>
#include <cmath>
#include <cstring>
#include ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发