1055. 集体照 (25) PAT乙级真题

2023-11-18

1055. 集体照 (25)

拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下:

  • 每排人数为N/K(向下取整),多出来的人全部站在最后一排;
  • 后排所有人的个子都不比前排任何人矮;
  • 每排中最高者站中间(中间位置为m/2+1,其中m为该排人数,除法向下取整);
  • 每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、188、190、186、170。这里假设你面对拍照者,所以你的左边是中间人的右边);
  • 若多人身高相同,则按名字的字典序升序排列。这里保证无重名。

现给定一组拍照人,请编写程序输出他们的队形。

输入格式:

每个输入包含1个测试用例。每个测试用例第1行给出两个正整数N(<=10000,总人数)和K(<=10,总排数)。随后N行,每行给出一个人的名字(不包含空格、长度不超过8个英文字母)和身高([30, 300]区间内的整数)。

输出格式:

输出拍照的队形。即K排人名,其间以空格分隔,行末不得有多余空格。注意:假设你面对拍照者,后排的人输出在上方,前排输出在下方。

输入样例:
10 3
Tom 188
Mike 170
Eva 168
Tim 160
Joe 190
Ann 168
Bob 175
Nick 186
Amy 160
John 159
输出样例:
Bob Tom Joe Nick
Ann Mike Eva
Tim Amy John
这道题在25分题目中不算难题,数据的存储我选择了结构体。读进数据以后先按身高排个序,因为输出第一行是最后一排,是题目中的“特殊数据”需要特别的考虑。另外,每一行中的数据并不需要再按题目说的重新排序,只要找的和数组之中的下标之间的对应关系就能很方便的解决问题了。下面是我的代码:
#include<stdio.h>
#include<string.h>
struct Photo
{
    char name[9];
    int stature;
}a[10000],swap;
int main(void)
{
    int n,k;
    int i,j,s,s1=0;
    scanf("%d %d%*c",&n,&k);
    for(i=0;i<n;i++)                                    //输入数据
    {
        j=0;
        do
        {
            scanf("%c",&a[i].name[j]);
        }while(a[i].name[j++]!=' ');
        a[i].name[--j]='\0';
        scanf("%d",&a[i].stature);
        getchar();
    }
    for(i=0;i<n;i++)                                    //将数据从大到小排列
    {
        s=i;
        for(j=i+1;j<n;j++)
        {
            if (a[s].stature<a[j].stature)
            {
                s=j;
            }
            if (a[s].stature==a[j].stature&&strcmp(a[s].name,a[j].name)>0)
            {
                s=j;
            }
        }
        swap=a[i];a[i]=a[s];a[s]=swap;
    }
    s=0;
    for(i=0;i<k;i++)
    {
        if (i==0)
        {
            s+=n-n/k*(k-1);
        }
        else
        {
            s+=n/k;
        }
        if((s-s1)%2==0) j=s;
        else j=s-1;
        for(;j>s1;j-=2)
        {
            printf("%s ",a[j-1].name);
        }
        for(j=s1;j<s;j+=2)
        {
            printf("%s",a[j].name);
            if(j<s-2) printf(" ");
            else printf("\n");
        }
        s1=s;
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1055. 集体照 (25) PAT乙级真题 的相关文章

  • 【桥接模式】VMware虚拟机配置桥接模式

    在虚拟机配置中 桥接模式和NAT模式是两种常见的网络连接方式 区别 1 桥接模式使虚拟机直接连接到物理网络 可以与外部设备直接通信 并获取唯一IP地址 2 NAT模式使用网络地址转换器将虚拟机的网络流量转发到物理网络上 虚拟机可以与外部网络
  • 强化学习读书笔记

    强化学习读书笔记 09 on policy预测的近似方法 参照 Reinforcement Learning An Introduction Richard S Sutton and Andrew G Barto c 2014 2015 2
  • 理解区块链

    本文基本上是收集的内容汇总 略微全面一点 1 区块链的诞生 互联网上的贸易 几乎都需要借助可资信赖的第三方信用机构来处理电子支付信息 这类系统仍然内生性地受制于 基于信用的模式 区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术
  • mysql InnoDB 数据存储和查找

    InnoDB 引擎数据存储 要想了解数据库 InnoDB 引擎是怎么样存储数据的 必须先了解 B Tree 了解之后才容易理解其存储原理 在 InnoDB 存储引擎中 也有页的概念 默认每个页的大小为 16K 也就是每次读取数据时都是读取

随机推荐

  • Element-UI中Select选择器详解

    前言 最近开发的后台管理系统项目采用Vue Element UI技术架构 在使用Elment UI中Select组件的时候遇到了比较多的操作难题 官网上关于这个组件的使用文档介绍的不是很详细 仅仅提供了一些基本用法 很多拓展场景都没有涉及到
  • win10服务器文件夹在哪里找,recent文件夹在哪里找_recent文件夹怎么清理

    recent文件夹在哪里找 recent文件夹怎么清理 Windows7系统在运行的时候会在系统内产生一定的垃圾 一般会保存在系统C盘中的WINDOWSCookies RECYCLED WINDOWSHistory WindowsRecen
  • 我的居转户之路

    1月6日提交材料 需要补充税单 重开离职证明 1月12日提交成功 3月10日受理通过 3月18日补充总公司组织机构代码 原来过期 房产证与居住证地址不一致证明 3月24日区里审核通过 3月17日去人才中心查询 市里还没有开始审核 4月29日
  • zookeeper3.4.6集群部署

    在安装Zookeeper之前 首先需要确保的就是主机名称 可选 hosts都已经更改 并且JDK成功安装 1 安装Zookeeper 使用命令 tar zxvf 命令将gz压缩文件解压 笔者Zookeeper的安装目录为 home Hado
  • odoo提交后不允许修改

    odoo工作流中 初始状态为 draft 提交后state状态改变 希望提交后数据不允许再修改 代码如下 reason fields Text string 请假事由 default required True states draft r
  • 若依框架放在服务器后台验证码出不来原因分析

    经发现是 env production 文件里的VUE APP BASE API没有修改成服务器上的域名地址 还是 prod api 所以加载不出来 vue config js里的某项配置后端端口不对 要修改成对应的后端端口即可
  • http爬虫简易版

    懂得都懂 en 不做过多的介绍 const http require http const https require https const cheerio require cheerio function filterData data
  • JS语法基础-核心语句

    1 表达式 表达式 expression JavaScript中的 短语 是JavaScript中用于计算并产生一个结果值的 短语 如 下面是一些最简单的字面量值和变量表达式 10 数字字面值 JavaScript 字符串字面值 i 变量表
  • (4)C中初始化字符串的几种方式和比较

    字符串几种定义方式的对比 一 字符串的定义方式 1 利用字符指针创建字符串 1 1 利用字符指针创建字符串 只能用字符串常量的方式进行初始化 2 利用字符数组创建字符串 2 1 情况1 定义了字符数组的长度 2 2 情况2 省略了定义数组长
  • 小记-面试时对MVC的理解

    MVC分别表示模型 视图 控制 1 模型层也叫业务逻辑层 是整个应用程序的核心 模型层接收视图层请求的数据并处理 返回最终的结果 2 视图层就是用户看到的并与之交互的界面 3 控制层就是接收用户的请求 并根据请求来决定调用哪个模型和视图去完
  • 中台战略-第四章、企业中台5大成功要素

    文章目录 第四章 企业中台5大成功要素 4 1 中台文化 7个行动准则和行动纲领 4 1 1 战略有思想 4 1 2 融合跨部门 4 1 3 创新快支持 4 1 4 试错多包容 4 1 5 共享创条件 4 1 6 赋能是基础 4 1 7 行
  • 性能使用指令

    vmstat 1 总的CPU利用率 mpstat P ALL 1 每个CPU核的利用率 top pidstat 每个进程的CPU利用率 信息来源 proc stat proc pid stat 查看网络流量 sar n DEV 1 100
  • jmeter调试错误大全

    一 前言 在使用jmeter做接口测试的过程中大家是不是经常会遇到很多问题 但是无从下手 不知道从哪里开始找起 对于初学者而言这是一个非常头痛的事情 这里结合笔者的经验 总结出以下方法 二 通过查看运行日志调试问题 写好脚本后 可以先试着运
  • HTML5 FormData 方法介绍

    XMLHttpRequest 是一个浏览器接口 通过它 我们可以使得 Javascript 进行 HTTP S 通信 XMLHttpRequest 在现在浏览器中是一种常用的前后台交互数据的方式 2008年 2 月 XMLHttpReque
  • Node.js中的回调解析

    Node js 异步编程的直接体现就是回调 异步编程依托于回调来实现 但不能说使用了回调后程序就异步化了 回调函数在完成任务后就会被调用 Node 使用了大量的回调函数 Node 所有 API 都支持回调函数 例如 我们可以一边读取文件 一
  • TCP打洞和UDP打洞的区别

    为什么网上讲到的P2P打洞基本上都是基于UDP协议的打洞 难道TCP不可能打洞 还是TCP打洞难于实现 假设现在有内网客户端A和内网客户端B 有公网服务端S 如果A和B想要进行UDP通信 则必须穿透双方的NAT路由 假设为NAT A和NAT
  • 决策树和随机森林的实现,可视化和优化方法

    决策树原理 决策树原理这篇文章讲的很详细 本文仅写代码实现 构造决策树 matplotlib inline import matplotlib pyplot as plt import pandas as pd from sklearn d
  • Ubuntu 下配置android studio 配置 adb环境变量 普通用户可以执行 root用户无法执行

    我们环境变量其实已经配置好了 但普通用户下可以执行adb root权限下就不能执行 我们看一下 普通用户和 root用户所在的目录 root 权限不能执行 我们切换一下 普通用户的当前目录 普通用户adb 可以执行 我们新开一个窗口 切换到
  • notepad++插件查看十六进制

    下载hex editor 点击plugins 选择plugin manager show plugin managers 然后再available里面找到hex editor 然后下载 使用hex editor 点击plugins hex
  • 1055. 集体照 (25) PAT乙级真题

    1055 集体照 25 拍集体照时队形很重要 这里对给定的N个人K排的队形设计排队规则如下 每排人数为N K 向下取整 多出来的人全部站在最后一排 后排所有人的个子都不比前排任何人矮 每排中最高者站中间 中间位置为m 2 1 其中m为该排人