#yyds干货盘点# 名企真题专题:马戏团

时间:2022-12-12 11:04:38

1.简述:

描述

搜狐员工小王最近利用假期在外地旅游,在某个小镇碰到一个马戏团表演,精彩的表演结束后发现团长正和大伙在帐篷前激烈讨论,小王打听了下了解到, 马戏团正打算出一个新节目“最高罗汉塔”,即马戏团员叠罗汉表演。考虑到安全因素,要求叠罗汉过程中,站在某个人肩上的人应该既比自己矮又比自己瘦,或相等。 团长想要本次节目中的罗汉塔叠的最高,由于人数众多,正在头疼如何安排人员的问题。小王觉得这个问题很简单,于是统计了参与最高罗汉塔表演的所有团员的身高体重,并且很快找到叠最高罗汉塔的人员序列。 现在你手上也拿到了这样一份身高体重表,请找出可以叠出的最高罗汉塔的高度,这份表中马戏团员依次编号为1到N。

输入描述:

首先一个正整数N,表示人员个数。 之后N行,每行三个数,分别对应马戏团员编号,体重和身高。

输出描述:

正整数m,表示罗汉塔的高度。

示例1

输入:

6
1 65 100
2 75 80
3 80 100
4 60 95
5 82 101
6 81 70

输出:

4

2.代码实现:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
public static void main(String[] args) throws IOException {
SH1();
}
static class Persion{
public int id;
public int weight;
public int height;

}
public static void SH1() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String ln;
while ((ln = br.readLine()) != null){
List<Persion> personList = new ArrayList<>();
int n = Integer.parseInt(ln);
int[] p = new int[n];
for (int i = 0; i < n; i++) {
String[] str = br.readLine().split(" ");
int id = Integer.parseInt(str[0]);
int weight = Integer.parseInt(str[1]);
int heigth = Integer.parseInt(str[2]);
Persion persion = new Persion();
persion.id = id;
persion.weight = weight;
persion.height = heigth;
personList.add(persion);
}
personList.sort((a,b)->{
if (a.weight - b.weight == 0){
return b.height - a.height;
}
return a.weight - b.weight;
});
int size = personList.size();
for (int i = 1; i < size; i++) {
for (int j = i - 1 ; j >= 0; j--) {
if (personList.get(j).height <= personList.get(i).height){
if (p[i] < p[j] + 1){
p[i] = p[j] + 1;
}
}
}
}
int max = 0;
for (int i = 0; i < n; i++) {
if (p[i] > max) {
max = p[i];
}
}
System.out.println(max+1);
}

}
}