题目描述 可多宇宙中,三位数很特殊,每个三位数都有自己独一无二的名字。并且对于三位数有特殊的排序方法,个位大的排在最前面,个位一样的看百位,按百位从大到小排序,如果个位和百位都一样,按它们的名字从小到大排序。 输入描述 第一行是一个整数 n (0 < n < 100),表示有多少个数; 接下来的 n 行,每行有一个整数(均为三位数)和一个字符串(为每个三位数的名字,名字互不相同) 输出描述 输出为 n 行,每行有一个字符串,是这个三位数的名字(C++) 样例1 输入 4 900 aaa 209 bbb 339 ccc 309 ddd 输出 ccc ddd bbb aaa
时间: 2024-04-12 10:30:56 浏览: 106
对于这个问题,我们可以使用一个自定义的数据结构来存储每个三位数及其对应的名字。然后按照题目要求的排序方法进行排序。以下是一个可能的解决方案:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct Number {
int value;
std::string name;
};
bool compare(const Number& a, const Number& b) {
if (a.value % 10 != b.value % 10) {
return a.value % 10 > b.value % 10;
} else if (a.value / 100 != b.value / 100) {
return a.value / 100 > b.value / 100;
} else {
return a.name < b.name;
}
}
int main() {
int n;
std::cin >> n;
std::vector<Number> numbers(n);
for (int i = 0; i < n; ++i) {
std::cin >> numbers[i].value >> numbers[i].name;
}
std::sort(numbers.begin(), numbers.end(), compare);
for (const auto& number : numbers) {
std::cout << number.name << std::endl;
}
return 0;
}
```
以上是一个使用 C++ 编写的解决方案。我希望这可以帮到你!如果你还有其他问题,请随时提问。
阅读全文