2 条题解

  • 0
    @ 2025-2-12 16:24:30

    插入排序方法:

    #include <bits/stdc++.h>
    using namespace std;
    
    // 定义一个结构体来存储每个人的信息
    struct Person {
        string gender;
        float height;
    };
    
    // 自定义插入排序函数:男生身高从矮到高
    void insertionSortMale(vector<Person>& males) {
        for (int i = 1; i < males.size(); i++) {
            Person key = males[i];
            int j = i - 1;
            while (j >= 0 && males[j].height > key.height) {
                males[j + 1] = males[j];
                j--;
            }
            males[j + 1] = key;
        }
    }
    
    // 自定义插入排序函数:女生身高从高到矮
    void insertionSortFemale(vector<Person>& females) {
        for (int i = 1; i < females.size(); i++) {
            Person key = females[i];
            int j = i - 1;
            while (j >= 0 && females[j].height < key.height) {
                females[j + 1] = females[j];
                j--;
            }
            females[j + 1] = key;
        }
    }
    
    int main() {
        int n;
        cin >> n;
    
        vector<Person> males, females;
    
        // 输入每个人的性别和身高,并分类存储
        for (int i = 0; i < n; i++) {
            string gender;
            float height;
            cin >> gender >> height;
            if (gender == "male") {
                males.push_back({gender, height});
            } else {
                females.push_back({gender, height});
            }
        }
    
        // 对男生按身高从矮到高排序
        insertionSortMale(males);
    
        // 对女生按身高从高到矮排序
        insertionSortFemale(females);
    
        // 输出排好队的结果,男生在前,女生在后
        for (int i = 0; i < males.size(); i++) {
            printf("%.2f ", males[i].height);
        }
        for (int i = 0; i < females.size(); i++) {
            printf("%.2f ", females[i].height);
        }
    
        return 0;
    }
    
    
    • 0
      @ 2025-2-12 16:10:05

      原题解:

      #include <bits/stdc++.h>
      using namespace std;
      struct Student {
          string name;
          double score;
      };
      bool cmp(Student a, Student b) { 
          return a.score < b.score; 
      }
      
      int main() {
          int n;
          cin >> n;
          Student a[n];
          for (int i = 0; i < n; i++)
              cin >> a[i].name >> a[i].score;
          sort(a, a + n, cmp);
          for (int i = 0; i < n; i++)
              if (a[i].name == "male")
                  printf("%.2lf ", a[i].score);
                  
          for (int i = n - 1; i >= 0; i--)
              if (a[i].name == "female")
                  printf("%.2lf ", a[i].score);
          return 0;
      }
      
      • 1

      信息

      ID
      662
      时间
      1000ms
      内存
      256MiB
      难度
      9
      标签
      递交数
      7
      已通过
      5
      上传者