不正经题解(真的不正经吗?)
2026-02-22 16:53:57
发布于:浙江
19阅读
0回复
0点赞
别人用sort,我不用,因为我不知道怎么用,所以我用:
deque
不过这要复杂一点,所以如果想让代码少一点,就用sort吧,如果你也不会用,就用deque。
首先头文件部分:
#include<iostream>
#include<deque>
#include<algorithm>
#include<string>
#include<iomanip>
using namespace std;
#include<iostream>:c++普通头文件,只有基础的东西。
#include<deque>:包含deque,queue的升级版。
#include<algorithm>:包含max,min函数。
#include<string>:包含string,字符串。
#include<iomanip>:保留()位小数。
using namespace std:不用写std : : string, std : : cin,std : : cout……。
接下来chazhaoweizhi函数:
int chazhaoweizhi(deque<float> a, float x) {
for(int i = 0; i < a.size(); i++) {
if(a[i] == x) {
return i;
}
}
return -1;
}
用于查找x在a数组里的哪个位置。
接下来主函数部分:
int main() {
int n;
cin >> n;
deque<float> male,female;
float height;
string sex;
for(int i = 0; i < n; i++) {
cin >> sex >> height;
if(sex == "male") {
male.push_back(height);
}else{
female.push_back(height);
}
}
int len = male.size();
float max_ = 214748;
for(int i = 0; i < len; i++) {
for(int j = 0; j < male.size(); j++) {
max_ = min(max_, male[j]);
}
int weizhi = chazhaoweizhi(male, max_);
cout << fixed << setprecision(2) << male[weizhi] << " ";
male.erase(male.begin() + weizhi);
max_ = 214748;
}
len = female.size();
max_ = -214748640;
for(int i = 0; i < len; i++) {
for(int j = 0; j < female.size(); j++) {
max_ = max(max_, female[j]);
}
int weizhi = chazhaoweizhi(female, max_);
if(i != len - 1) {
cout << fixed << setprecision(2) << female[weizhi] << " ";
}else{
cout << fixed << setprecision(2) << female[weizhi];
}
female.erase(female.begin() + weizhi);
max_ = -214748640;
}
}
完整代码:
#include<iostream>
#include<deque>
#include<algorithm>
#include<string>
#include<iomanip>
using namespace std;
int chazhaoweizhi(deque<float> a, float x) {
for(int i = 0; i < a.size(); i++) {
if(a[i] == x) {
return i;
}
}
return -1;
}
int main() {
int n;
cin >> n;
deque<float> male,female;
float height;
string sex;
for(int i = 0; i < n; i++) {
cin >> sex >> height;
if(sex == "male") {
male.push_back(height);
}else{
female.push_back(height);
}
}
int len = male.size();
float max_ = 214748;
for(int i = 0; i < len; i++) {
for(int j = 0; j < male.size(); j++) {
max_ = min(max_, male[j]);
}
int weizhi = chazhaoweizhi(male, max_);
cout << fixed << setprecision(2) << male[weizhi] << " ";
male.erase(male.begin() + weizhi);
max_ = 214748;
}
len = female.size();
max_ = -214748640;
for(int i = 0; i < len; i++) {
for(int j = 0; j < female.size(); j++) {
max_ = max(max_, female[j]);
}
int weizhi = chazhaoweizhi(female, max_);
if(i != len - 1) {
cout << fixed << setprecision(2) << female[weizhi] << " ";
}else{
cout << fixed << setprecision(2) << female[weizhi];
}
female.erase(female.begin() + weizhi);
max_ = -214748640;
}
}
这里空空如也








有帮助,赞一个