PAT_B_1055_Java(25分)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Main {private static BufferedReader input; // 输入流private static int totalPeople; // 总人数private static int totalRows; // 总行数private static BufferedReader getBufferedReader() {// 获取输入流InputStreamReader isr = new InputStreamReader(System.in);return new BufferedReader(isr);}private static void setTotalNumber() throws Exception {// 设置总人数和总排数String str = input.readLine();String[] arr = str.split(" ");totalPeople = Integer.parseInt(arr[0]); // 总人数totalRows = Integer.parseInt(arr[1]); // 总排数}private static People[] getPeople() throws Exception {// 获取所有人的信息People[] people = new People[totalPeople];// 保存所有人for (int i = 0; i < totalPeople; ++i) {people[i] = new People();String str = input.readLine(); // 读取一行信息String[] arr = str.split(" ");people[i].setName(arr[0]); // 设置姓名int height = Integer.parseInt(arr[1]);people[i].setHeight(height); // 设置身高}return people; // 返回所有人}private static void outputFormation(People[] people) {// 输出队形int rowNumber = totalPeople / totalRows;// 每排的人数int from = 0;// 每排的起始下标(闭),默认为最后一排的起始下标// 每排的结束下标(开),默认为最后一排的结束下标int to = rowNumber + totalPeople % totalRows;for (int i = 0; i < totalRows; ++i) {// 所有排List<People> row = getRowsPeople(people, from, to);// 获取一排的人outputRow(row); // 输出这一排的人的姓名from = to; // 下一排的起始下标to += rowNumber; // 下一排的结束下标}}private static List<People> getRowsPeople( People[] people, // 所有人int from, // 起始下标(闭)int to) {// 结束下标(开)int length = to - from;// 这一排的人数List<People> row = new ArrayList<People>(length);// 初始化长度为length的列表boolean dir = true;// 插入列表的方向,true表示在末尾插入for (int i = from; i < to; ++i) {if (dir) {row.add(people[i]); // 列表末尾插入dir = false; // 改变方向为首部插入} else {row.add(0, people[i]); // 列表首部插入dir = true; // 改变方向为末尾插入}}return row;// 返回这一排的人}private static void outputRow(List<People> row) {// 输出row这一排的人int length = row.size();for (int i = 0; i < length; ++i) {if (i > 0) {System.out.print(" ");// 不是第一个人,前面输出空格}People people = row.get(i);String name = people.getName();System.out.print(name);}System.out.println();}public static void main(String[] args) throws Exception {input = getBufferedReader(); // 获取输入流setTotalNumber(); // 设置总人数和总排数People[] people = getPeople(); // 获取所有人Arrays.sort(people); // 排序outputFormation(people); // 输出队形}
}class People implements Comparable<People> {// 人private String name; // 姓名private int height; // 身高public String getName() { // 获取姓名return name;}public void setName(String name) { // 设置姓名this.name = name;}public int getHeight() { // 获取身高return height;}public void setHeight(int height) { // 设置身高this.height = height;}@Overridepublic int compareTo(People o) {int anotherHeight = o.getHeight(); // 别人的身高if (height != anotherHeight) { // 身高不等return anotherHeight - height; // 身高降序}String anotherName = o.getName(); // 别人的姓名return name.compareTo(anotherName); // 姓名字典序升序}
}
PAT_B_1055_Java(25分)相关推荐
- 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一 ...
- PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)
7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...
- PTA 03-树1 树的同构 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/711 5-3 树的同构 (25分) 给定两棵树T1和T2.如果T1可以通过若干次左右 ...
- 【PAT (Advanced Level) Practice】1051 Pop Sequence (25 分)
1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the order ...
- 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)
1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...
- 【PAT (Advanced Level) Practice】1149 Dangerous Goods Packaging (25 分)
1149 Dangerous Goods Packaging (25 分) When shipping goods with containers, we have to be careful not ...
- 7-29 修理牧场 (25 分)
7-29 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L i 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...
- 7-18 银行业务队列简单模拟 (25 分)
7-18 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达 ...
- 5-35 城市间紧急救援 (25分) pat 数据结构
题目连接 https://pta.patest.cn/pta/test/15/exam/4/question/862 5-35 城市间紧急救援 (25分) 作为一个城市的应急救援队伍的负责人,你有 ...
最新文章
- ubuntu下快速安装adb,fastboot的方法。
- 中职计算机说课稿三篇,2020精选中职计算机说课稿3篇(15页)-原创力文档
- 电子元器件首饰!送给你喜欢的女孩!
- linux qt程序编译出错,QTcreator编译出错
- Linux下实现Raid 5软阵列
- SQL Server判断对象是否存在 (if exists (select * from sysobjects )
- ofo 回应假装老外秒退押金;董明珠雷军十亿赌约到期;高通苹果摩擦再升级 | 极客头条...
- 关于PHOTO SHOP CS9.0无法启动adobe updater 请重新安装应用程序和组件解决方法!
- eclipse远程发布代码的方法(SSH自动同步)
- 如何查看各类期刊的影响因子
- 游戏拳皇命运服务器维护,拳皇命运
- 三国演义中的十大谎言 VS 程序员十大口头禅
- 数据库查数据 索引
- 在html中什么标签可以显示小方块,css列表前的小方块
- 微pe工具箱+软碟通 制作 U盘启动盘
- 如何创建数据链接文件
- 我不需要保险,全家都不需要
- 【Matlab学习手记】sym8小波滤波
- 删除字符串中所有的空格
- python例程:AI智能联系人管理的程序
热门文章
- spring 点击保存按钮页面禁用_用一篇深度好文,详解按钮的设计
- python包怎么用_python的包怎么应用
- 使用apache配置基于IP地址的虚拟主机
- 王小云计算机,王小云学者主页-科技工作者之家
- 用Python实现一个SVM分类器策略
- 课堂作业:返回一个二维整数组中最大子数组的和
- 【技术人快报】美军计划换用Linux系统+安卓系统“克隆漏洞”曝光
- Atitti dbutil获取多个返回结果集的解决
- VMM系列之添加Hyper-V群集主机到VMM服务器
- USACO Section 4.2 题解