7-37 模拟EXCEL排序 (25分)--优先队列

#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
int C;
int cmp(const char a[], const char b[])//比较字符串大小的函数
{
    for (int i = 0; i < 10; i++)
    {
        if (a[i] == '' || b[i] == '')
            break;
        if (a[i] == b[i])
        {
            if (a[i] != '')
                continue;
            else
                break;
        }
        else if (a[i] > b[i])
        {
            return 1;
        }
        else
            return -1;
    }
    return 0;
}
struct node//结构体定义
{
    char num[10];
    char name[10];
    int score;
    bool operator < (const struct node& a)const
    {
        if (C == 1)
        {
            return (cmp(num, a.num) == 1);
        }
        else if (C == 2)
        {
            if (cmp(name, a.name) == 0)
            {
                return (cmp(num, a.num) == 1);
            }
            else if (cmp(name, a.name) == 1)
                return true;
            else return false;
        }
        else if (C == 3)
        {
            if (score == a.score)
                return (cmp(num, a.num) == 1);
            else
                return score > a.score;
        }
    }
};
int main()
{
    priority_queue<struct node> q;
    int N;
    cin >> N >> C;
    for (int i = 0; i < N; i++)
    {
        struct node t_node;
        cin >> t_node.num >> t_node.name >> t_node.score;
        q.push(t_node);
    }
    while (!q.empty())
    {
        //cout << q.top().num << ' ' << q.top().name << ' ' << q.top().score << endl;
     //用cout会超时 printf("%s %s %d ", q.top().num, q.top().name, q.top().score); q.pop(); } return 0; }
原文地址:https://www.cnblogs.com/2020R/p/12770856.html