OK,首先看题目描述:
再看输入和输出描述:
那通过审题我们可以得出以下结论:
①每个人肩上的人满足以下几个条件
a.身高和体重都比自己低
b.身高相等 体重比自己低
满足以上条件之一就可以
!!!!注意,体重相等,身高比自己低的人是不满足条件的!
②求的是最大的层数
那我的思路就是先把所有人都按身高从低到高进行排序,如果身高相等那么就按照体重从低到高排序。
之后就是上升子序列的求法了,我们设每个人的值为dp[i],设一个max值记录最大层数
①每个人的初始值dp[i]都为1(我自己一个人叠)
②和之前的每一个人dp[j](j<i)进行比较,符合条件就和比较 dp[i] 和 dp[j]+1 ,dp[i]取两者较大的值
③每个人和自己前面的人比较后,max 取 dp[i] 和 max 的较大值
④遍历完成后,max就是最高的层数了