5782 Special Event 结构体排序

解决思路

 
  • 初始化:定义一个结构体 node 来存储每一天的可用人数和天的编号。
 
  • 读取输入:读取每个人的可用性,并统计每一天的可用人数。
 
  • 排序:根据每一天的可用人数进行排序。
 
  • 输出结果:输出可用人数最多的天的编号,如果有多天满足条件,用逗号分隔。
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N = 1e3 + 10;
    
    // 定义一个结构体来存储每一天的可用人数和天的编号
    struct node {
        int x, id;
    };
    
    // 定义一个数组来存储每一天的可用人数和天的编号
    node a[6];
    int n;
    
    // 比较函数,用于按照可用人数对天进行排序
    bool cmp(node a, node b) {
        return a.x > b.x;
    }
    
    int main() {
        // 初始化每一天的可用人数和天的编号
        for (int i = 1; i <= 5; i++) {
            a[i].x = 0;
            a[i].id = i;
        }
    
        // 读取感兴趣参加活动的人数
        cin >> n;
        // 读取每个人的可用性,并统计每一天的可用人数
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= 5; j++) {
                char c;
                cin >> c;
                if (c == 'Y') a[j].x++;
            }
        }
    
        // 按照可用人数对天进行排序
        sort(a + 1, a + 1 + 5, cmp);
    
        // 输出可用人数最多的天的编号
        cout << a[1].id;
        for (int i = 2; i <= 5; i++) {
            if (a[i].x == a[1].x) {
                cout << "," << a[i].id;
            }
        }
        return 0;
    }

     

posted @ 2024-09-30 16:39  CRt0729  阅读(13)  评论(0编辑  收藏  举报