小明准备考研,要买一些书,虽然每个书店都有他想买的所有图书,但不同书店的不同书籍打的折扣可能各不相同,因此价格也可能各不相同。因为资金所限,小明想知道不同书店价格最便宜的图书各有多少本,以便节约资金。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。
对于每组测试,第一行先输入2个整数m,n(1≤m,n≤100),表示想要在m个书店买n本书;第二行输入m个店名(长度都不超过20,并且只包含小写字母),店名之间以一个空格分隔;接下来输入m行数据,表示各个书店的售书信息,每行由小数位数不超过2位的n个实数组成,代表对应的第1至第n本书的价格。

输出格式:

对于每组测试数据,按要求输出m行,分别代表每个书店的店名和能够提供的最廉价图书的数量,店名和数量之间留一空格。当然,比较必须是在相同的图书之间才可以进行,并列的情况也算。
输出要求按最廉价图书的数量cnt从大到小的顺序排列,若cnt相同则按店名的ASCII码升序输出。

输入样例:

2
3 3
xiwangshop kehaishop xinhuashop
11.1 22.2 33.3
11.2 22.2 33.2
10.9 22.3 33.1
5 5
xwsd khsd xhsd xxsw hytss
1 2 3 4 5
1.2 2.1 2.7 4.1 4.8
0.8 1.9 3.1 3.8 5.2
0.9 1.95 2.65 3.8 5.1
0.9 1.95 2.65 3.8 5.1

输出样例:

xinhuashop 2
kehaishop 1
xiwangshop 1
xhsd 3
hytss 2
xxsw 2
khsd 1
xwsd 0

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <stdio.h>
#include <math.h>
#include <string.h>
typedef struct {char name[22];double price[102];int cnt;                     //cnt意思是每家店有多少种最低价格的书
}Shop;void fun(Shop shop[], int m, int n){int i, j;for(i=0; i<n; i++){          //每种书价格在不同店之间比较大小,计算cntdouble min = shop[0].price[i];int k[m], minCnt=1, r;   //先用k数组暂时来记录最低店铺的下标k[0] = 0;                //默认第1家店为最低for(j=1; j<m; j++){if(shop[j].price[i] < min){//找到更低的价格min = shop[j].price[i];k[0] = j;        minCnt = 1;}else if(fabs(shop[j].price[i] - min) < 1e-6)//浮点数比较相等不能用==k[minCnt++] = j;}for(r=0; r<minCnt; r++)    shop[k[r]].cnt++;    //k数组里面记录的是最低价格店铺的下标}for(i=0; i<m; i++){        //根据cnt大小降序排序整个shop数组(其实不排序也行?)int max = shop[i].cnt, maxIndex = i;for(j=i+1; j<m; j++){if(shop[j].cnt > max){max = shop[j].cnt;maxIndex = j;}else if(shop[j].cnt == max){//当cnt相等时,根据店铺名称ASCII码升序排序if(strcmp(shop[j].name,shop[maxIndex].name) < 0){max = shop[j].cnt;maxIndex = j;}}}Shop tmp = shop[i];shop[i] = shop[maxIndex];shop[maxIndex] = tmp;printf("%s %d\n", shop[i].name, shop[i].cnt);}
}int main(){int t;scanf("%d", &t);while(t--){        //t组数据int m, n, i, j;Shop shop[102];    //最多有100家店scanf("%d%d", &m, &n);for(i=0; i<m; i++){scanf("%s", shop[i].name);shop[i].cnt = 0;    //cnt默认为0}for(i=0; i<m; i++){    //第m家店的第n本书价格for(j=0; j<n; j++)scanf("%lf", &shop[i].price[j]);}fun(shop, m, n);    //自定义函数}return 0;
}

PTA--结构体: 7-2 节约有理相关推荐

  1. PTA 结构体作业(基础)

    本题要求实现一个计算复数之积的简单函数. 函数接口定义: struct complex multiply(struct complex x, struct complex y); 其中struct c ...

  2. C语言 基于结构体的程序设计(PTA)

    一.实验目的 1.掌握C语言中结构体类型的定义和结构体变量的定义和引用. 2.掌握用结构指针传递结构数据的方法. 二.实验内容 1. 计算职工工资 给定N个职员的信息,包括姓名.基本工资.浮动工资和支 ...

  3. c语言结构体共用体枚举实例程序,10-C语言结构体-共用体-枚举

    结构体是什么? 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的,而结构体是用于保存一组不同类型的数组 定义结构体 在使用结构体之前必须先定义结构体类型,因为C语言不知道你的结构体中需要 ...

  4. WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...

    1. vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常.相信是权限问题,请问应该如何解决?能不能设置dll默认以管理员身分运行? 备注:此DLL已注册成功! 回复引用 全部回 ...

  5. 结构体后面定义一个空数组的含义

    最近在写C代码,经常看到Linux 的头文件中有的结构体后面会定义一个空数组,不知道其为何作用?经过高人指点终于明白其要点! struct inotify_event {    __s32 wd;   ...

  6. 更改结构体的内存字节对齐方式--经典

    结构体字节对齐 http://blog.163.com/ecy_fu/blog/static/4445126200910603739941/ http://hi.baidu.com/skyland_l ...

  7. C++中的结构体,C管理进程代码,C++管理进程代码,C语言中的联合体

     1.C++中的结构体 #include<iostream> struct lstruct { int num; }; struct MyStruct { int num; doubl ...

  8. C语言博客作业--结构体

    一.PTA实验作业 题目1:6-4 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 定义cala函数,定义ifor i=0 to n 遍历数组计算每一个学生的三门课成绩的和,存放在su ...

  9. Linux与时间相关的结构体及相关用法

    1. Linux下与时间有关的结构体         struct timeval        {              int tv_sec;              int tv_usec ...

  10. C语言结构体对齐[转]

    C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...

最新文章

  1. python 子图_python 实现在一张图中绘制一个小的子图方法
  2. 系统应用iPad设备应用需定制开发的3大理由
  3. 若某计算机字长为16位,题目来源于王道论坛 某计算机字长为16位,主存地址空间...
  4. 加号和减号在一起怎么读_在家摄影怎么玩?拍摄小黄米场景搭建,摄影软件和修图软件介绍...
  5. zookeeper 虚拟机搭建好后 外部链接不上_Ubuntu Server搭建Hyperledger Fabric 2.1学习环境...
  6. JavaScript replace()
  7. 书店购物车--增删改
  8. springcloud springboot 集成cxf webservice框架,配置cxf拦截器
  9. Python-CSV文件存储
  10. 数据分析-深度学习Day5
  11. 使用vue-cli快速构建项目
  12. 【无标题】程序员如何优雅地摸鱼?
  13. [源码解析] 深度学习分布式训练框架 horovod (11) --- on spark --- GLOO 方案
  14. Spring基础之IOCAOPDI
  15. 系统日志管理——journalctl
  16. OJ:Bad Cowtractors(最大生成树)
  17. 开启Pix ASA 5520 snmp协议
  18. 【jzoj2092】【数学】【2016.11.12PJ模拟】游戏
  19. Tips【油猴Tampermonkey】脚本安装教程
  20. 泉峰集团携手亚马逊云科技与普华永道,将痛点逐个击破

热门文章

  1. 使用Composer管理项目第三方库文件
  2. 深度学习与自然语言处理(3)_斯坦福cs224d Lecture 3
  3. 360,手机助手的功能,既然有如此完美?
  4. 科达飞讯语义识别报20021,引擎错误
  5. 7代cpu能装虚拟xp系统吗_小米手机最新系统MIUI 11 推荐
  6. 阿里、百度等多家公司Java面试记录与总结
  7. Clonezilla克隆linux系统
  8. 英语教学计算机培训心得,英语教学心得体会
  9. dede flag php,织梦dede:list按flag属性调用文档
  10. Android 音频