码迷,mamicode.com
首页 > 其他好文 > 详细

hdu1263 简单模拟

时间:2014-07-22 22:48:54      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:style   os   io   for   re   c   

题意:根据水果销量表,按照特定格式输出

格式:首先按产地排序,然后同一产地按水果名排序

注意:第一,设计多级排序

          第二,同一产地同一水果可能多次出现,所以需要在前面已经输入的水果里面遍历找一次

          第三,这里

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int flag;//不同产地不同名的水果种类数量

struct Node{
    string name,id;
    int sum;
    bool operator<(const Node &N)const
    {
        if(id == N.id) return name < N.name;
        else return id < N.id;
    }
}node[105];

void print(int M){
    for(int i = 0; i < flag; )
    {
        string id = node[i].id;
        cout << id << endl;
        cout <<"   |----" << node[i].name << '(' << node[i].sum <<')' <<endl;
        i ++;
        while(id == node[i].id && i < M)
        {
            cout <<"   |----" << node[i].name << '(' << node[i].sum <<')' <<endl;
            i ++;
        }
    }
}

int main()
{
    int N,M;
    cin >> N;
    string name,id;
    int sum;
    while(N --)
    {
        cin >> M;
        flag = 0;
        for(int i = 0; i < M; i ++)
        {
            cin >> name >> id >> sum;
            int j;
            for(j = 0; j < i; j ++) //在前面已有的水果中查找一次
            {
                if(name == node[j].name && id == node[j].id)
                {
                    node[j].sum += sum;
                    break;
                }
            }
            if(i == j) //在之前的水果中没找到,那么就是一种新的水果
                node[flag].id = id,node[flag].name = name,node[flag++].sum = sum;
        }
        sort(node,node+flag);
        print(M);
        if(N != 0) cout << endl;//两个案中间空行例
    }
    return 0;
}


hdu1263 简单模拟,布布扣,bubuko.com

hdu1263 简单模拟

标签:style   os   io   for   re   c   

原文地址:http://blog.csdn.net/zyy173533832/article/details/37989337

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!