P1104,#5&#6WA

P1104 生日

chenyanxiu_230531 @ 2025-01-01 19:28:21

本代码得了80分,借鉴了这篇题解的思路

#include<iostream>
#include<cstring>
using namespace std;

struct Students{
    string name;
    int birthday; // 存储为年月日的整数形式,例如19900101
    int number;
}a[1000000];

// 交换两个学生的信息
void swap(int j, int k){
    Students temp = a[j];
    a[j] = a[k];
    a[k] = temp;
}

int main(){
    int k;
    cin >> k;
    int x, y, z;
    for(int i = 0; i < k; i++){
        cin >> a[i].name >> x >> y >> z;
        a[i].birthday = x * 10000 + y * 100 + z;
        a[i].number = i + 1;
    }
    // 使用冒泡排序算法进行排序
    for(int i = 0; i < k - 1; i++){
        for(int j = 0; j < k - 1 - i; j++){
            if(a[j].birthday > a[j + 1].birthday){
                swap(j, j + 1);
            }
            else if(a[j].birthday == a[i].birthday && a[j].number > a[i].number){
                swap(j, j + 1);
            }
        }
    }
    // 输出排序后的学生姓名
    for(int i = 0; i < k; i++){
        cout << a[i].name << endl;
    }
    return 0;
}

代码详细易理解,只需给出错误的地方即可。


|