HDU 1263 水果

简介:
水果

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2881    Accepted Submission(s): 1089

Problem Description
夏天来了~~好开心啊,呵呵,好多好多水果~~
Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样Joe就可以很容易掌握所有水果的销售情况了.
 
Input
第一行正整数N(0<N<=10)表示有N组测试数据.
每组测试数据的第一行是一个整数M(0<M<=100),表示工有M次成功的交易.其后有M行数据,每行表示一次交易,由水果名称(小写字母组成,长度不超过80),水果产地(小写字母组成,长度不超过80)和交易的水果数目(正整数,不超过100)组成.
 
Output
对于每一组测试数据,请你输出一份排版格式正确(请分析样本输出)的水果销售情况明细表.这份明细表包括所有水果的产地,名称和销售数目的信息.水果先按产地分类,产地按字母顺序排列;同一产地的水果按照名称排序,名称按字母顺序排序.
两组测试数据之间有一个空行.最后一组测试数据之后没有空行.
 
Sample Input
1
5
apple shandong 3
pineapple guangdong 1
sugarcane guangdong 1
pineapple guangdong 3
pineapple guangdong 1
 
Sample Output
guangdong
   |----pineapple(5)
   |----sugarcane(1)
shandong

   |----apple(3)

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node
{
   int num;
   char name[200],where[200];
}a[200];
int cmp(node x,node y)
{
    if(strcmp(x.where,y.where)!=0) return strcmp(x.where,y.where)<0;
    if(strcmp(x.name,y.name)!=0) return strcmp(x.name,y.name)<0;
}
int main()
{
    int i,j,n,m,sum,v;
    char s[200][200];
    char flag[200];
    scanf("%d",&n);
    while(n--)
    {
       memset(flag,0,sizeof(flag));
       memset(a,0,sizeof(a));
       scanf("%d",&m);
       for(i=0;i<m;i++)
       scanf("%s%s%d",&a[i].name,&a[i].where,&a[i].num);
       sort(a,a+m,cmp);
       v=1;
       strcpy(s[0],a[0].where);
       for(i=1;i<m;i++)
       {
          if(strcmp(s[v-1],a[i].where)!=0)
          strcpy(s[v++],a[i].where);
       }
       int sign;
       for(i=0;i<v;i++)
       {
          printf("%s\n",s[i]);
          sum=0;sign=0;
          for(j=0;j<m;j++)
          {
             if(strcmp(s[i],a[j].where)==0)
             {
                sign++;
                if(sign==1)
                {
                   strcpy(flag,a[j].name);
                   sum+=a[j].num;
                }
                else
                {
                    if(strcmp(flag,a[j].name)!=0)
                    {
                       printf("   |----%s(%d)\n",flag,sum);
                       sum=0;sign=1;
                       memset(flag,0,sizeof(flag));
                       strcpy(flag,a[j].name);
                       sum+=a[j].num;
                    }
                    else
                    {
                        sum+=a[j].num;
                    }
                }
             } 
          }
          printf("   |----%s(%d)\n",flag,sum);
       }
       if(n!=0)
       printf("\n");
    }
    return 0;
}

相关文章
|
9月前
|
计算机视觉 Python
PIL图像转换为Numpy数组:技术与案例详解
本文介绍了如何将PIL图像转换为Numpy数组,以便利用Numpy进行数学运算和向量化操作。首先简要介绍了PIL和Numpy的基本功能,然后详细说明了转换过程,包括导入库、打开图像文件、使用`np.array()`或`np.asarray()`函数进行转换,并通过打印数组形状验证转换结果。最后,通过裁剪、旋转和缩放等案例展示了转换后的应用,以及如何将Numpy数组转换回PIL图像。此外,还介绍了处理base64编码图像的完整流程。
273 4
|
11月前
|
自动驾驶 物联网 5G
|
存储 人工智能 安全
能多端登录的无影云电脑玩的就是“花样”!
众所周知,无影办公是近年来较为流行的一种新型办公方式,其采用云计算、虚拟化、网络传输等技术,实现了办公终端的全面云化。这种方式在传统的办公场景中,具有很多优势,使用无影硬件终端可以让员工更加高效地完成工作,提高了企业的生产效率。那么本文就来简单分享一下能多端登录的无影云电脑。
1922 2
能多端登录的无影云电脑玩的就是“花样”!
|
iOS开发 数据安全/隐私保护
|
存储 弹性计算 运维
阿里云电脑多少钱一台(阿里云电脑收费标准)
阿里云电脑多少钱一台(阿里云电脑收费标准)
1301 0
|
安全 网络安全 数据安全/隐私保护
身份证号码实名认证能够保障网络交易的安全
随着互联网的普及,网络安全问题日益受到人们的关注。身份证号码实名认证作为一种有效的身份验证方式,能够保障网络交易的安全,防止身份信息被盗用。本文将详细介绍如何进行身份证号码实名认证,以及其意义和重要性。
|
SQL 消息中间件 NoSQL
一文搞定接口幂等性架构设计方案
现如今很多系统都会基于分布式或微服务思想完成对系统的架构设计。那么在这一个系统中,就会存在若干个微服务,而且服务间也会产生相互通信调用。那么既然产生了服务调用,就必然会存在服务调用延迟或失败的问题。当出现这种问题,服务端会进行重试等操作或客户端有可能会进行多次点击提交。如果这样请求多次的话,那最终处理的数据结果就一定要保证统一,如支付场景。此时就需要通过保证业务幂等性方案来完成。
279 0
PLC的工作原理
PLC采用循环执行用户程序的方式,称为循环扫描工作方式,一个循环扫描周期,主要可分为输入采样、用户程序执行和输出刷新三个阶段。
PLC的工作原理
|
Linux 网络安全 数据安全/隐私保护
Linux-Mac配置SSH免密登录
Linux-Mac配置SSH免密登录
1849 0
|
机器学习/深度学习 运维 监控
机器学习在高德地图轨迹分类的探索和应用
本文主要针对非机动车、机动车分类探索轨迹分类问题的小结。
机器学习在高德地图轨迹分类的探索和应用