题目1014:排名

来源:互联网 发布:ubuntu 搜狗输入法 编辑:程序博客网 时间:2024/06/04 20:28

这道题没有涉及到算法,只是数据存储和判断起来可能比较复杂

需要注意的是对sort()函数的使用

#include <iostream>#include <vector>#include <algorithm>using namespace std;struct Node{    string id;    int pass;    int num[10];    int sum;};bool cmp(Node a,Node b) //注意此处cmp()的写法{    if (a.sum == b.sum) return a.id < b.id;    else return a.sum > b.sum;}int main(){    int n,m,g;    while (cin >> n)    {        int count = 0;        if (n == 0) break;        Node ss[1000];        cin >> m >> g;        int each_goal[10];        for (int i = 0;i < m;i++)        {            cin >> each_goal[i];        }        for (int i = 0;i < n;i++)        {            ss[i].sum = 0;            cin >> ss[i].id >> ss[i].pass;            for (int j = 0;j < ss[i].pass;j++) cin >> ss[i].num[j];        }        for (int i = 0;i < n;i++)        {            for (int j = 0;j < ss[i].pass;j++)            {                ss[i].sum += each_goal[ss[i].num[j]-1];            }            if (ss[i].sum >= g) count++;        }        sort (ss,ss+n,cmp);      //使用sort()函数进行排序        cout << count << endl;        for (int i = 0;i < count;i++)        {            cout << ss[i].id << ' ' << ss[i].sum << endl;        }    }}


0 0
原创粉丝点击