NYOJ-263解题报告

来源:互联网 发布:python高级编程最新版 编辑:程序博客网 时间:2024/06/03 11:17

精 挑 细 选

时间限制:3000 ms  |  内存限制:65535 KB
难度:1
描述
小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下:
1
 这根钢管一定要是仓库中最长的;
2
 这根钢管一定要是最长的钢管中最细的;
3
 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。
相关的资料到是有,可是,手工从几百份钢管材料中选出符合要求的那根…… 
要不,还是请你编写个程序来帮他解决这个问题吧。
输入
第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据的第一行 有一个整数m(m<=1000),表示仓库中所有钢管的数量,
之后m行,每行三个整数,分别表示一根钢管的长度(以毫米为单位)、直径(以毫米为单位)和编码(一个9位整数)。
输出
对应每组测试数据的输出只有一个9位整数,表示选出的那根钢管的编码,
每个输出占一行
样例输入
222000 30 1234567892000 20 98765432143000 50 8721984423000 45 7524981242000 60 7651287423000 45 652278122
样例输出
987654321752498124



这个题其实不难,就是个三级排序,原理还是冒泡排序的拓展版。

先写出冒泡排序的程序模板:


for(int i = 0;i<n;i++)
for(int j = 1;j<n-i;j++){

if(a[j]  *** a[j-1]  ){

交换

}

}

在冒泡排序中我们仅仅处理了当前一项和后一项满足大于或小于的关系时完成交换的动作,但是并未处理当前一项和后一项相同的时候应该怎么处理,这个题就是要处理        多个钢管在长度都是最长的情况下,半径都是最小的情况下,求得编号最大的钢管。我们把要的排序结果放在Arraylist的第一位,最后输出第一个元素的编号即可。

判断的逻辑如下:

冒泡模板{

if(长度[j] >长度[j-1]){

交换{j, j-1 }

}

else if(长度[j]==长度[j-1]){//长度相等看半径

if(半径[j] <半径[j-1]){

交换{j,j-1}

}

else if(半径[j] == 半径[j-1]){//半径相等看编号

if(编号[j] > 编号[j-1]){

交换{j,j-1}

}

}

}

}



package NYoj;import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;class Steel{int length = 0;int radius = 0;int id = 0;public Steel(int length,int radius,int id) {this.id = id;this.length = length;this.radius = radius;}public int getLength() {return length;}public void setLength(int length) {this.length = length;}public int getRadius() {return radius;}public void setRadius(int radius) {this.radius = radius;}public int getId() {return id;}public void setId(int id) {this.id = id;}}public class _263 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N = sc.nextInt();while(N>0){int n= sc.nextInt();ArrayList<Steel> array = new ArrayList<Steel>(1);for(int i=0;i<n;i++){array.add(new Steel(sc.nextInt(),sc.nextInt(),sc.nextInt()));}for(int i = 0;i<n;i++)for(int j = 1;j<n-i;j++){if(array.get(j).getLength()>array.get(j-1).getLength()){Collections.swap(array, j-1, j);}else if(array.get(j).getLength()==array.get(j-1).getLength()){if(array.get(j).getRadius()<array.get(j-1).getRadius()){Collections.swap(array, j-1, j);}else if(array.get(j).getRadius()==array.get(j-1).getRadius()){if(array.get(j).getId()>array.get(j-1).getId()){Collections.swap(array, j-1, j);}}}}System.out.println(array.get(0).getId());N--;}}}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 港澳通行证 团签怎么办 出境章没有盖怎么办 过海关没有盖章怎么办 中国入境没盖章怎么办 护照有效期写错怎么办 回国海关电子盖章怎么办 户籍在学校怎么办护照 割过双眼皮护照怎么办 想换电子护照怎么办 有美签的护照丢失怎么办 护照在国外掉了怎么办 上海动迁房户口怎么办 政府强制拆房怎么办 农村无证宅基地怎么办 身份证没磁怎么办护照 买安置房怎么办产权 安置房房东违约怎么办 安置房产权到期怎么办 安置房怎么办房产证吗 美甲后指甲长了怎么办 在菲律宾怎么办持枪证? 绝地求生打不准怎么办 身份证号码变更后社保怎么办 社保与身份不符怎么办 年龄改了学籍怎么办 结婚证信息错误怎么办 六级身份证过期怎么办 身份号泄露了怎么办 身体证信息泄露怎么办 手机号被泄漏了怎么办 姓名和电话泄露怎么办 个人身份证信息泄露怎么办 身份号码泄露了怎么办 我身份证泄露了怎么办 身份证信息泄漏了怎么办 无锡身份证丢了怎么办 人在外地怎么办身份证 欠空放公司不还怎么办 兼职要身份证照片怎么办 身份证刷不了磁怎么办 身份证不能刷了怎么办