题目解析
我的解题思路如下:
由于题目说
给定一个数字序列,每次根据序列中的数字n,上升n层或者下降n层,前后两次的方向必须相反,规定首次的方向向上,自行组织序列的顺序按规定操作到达指定楼层
因此,我们可以认为要从数字序列中选出两组数,一组是上升,一组是下降
假设数字序列总个数n,期望楼层是t
- 如果n是偶数,则上升组要选n/2个,其余的都是下降组
- 如果n是奇数,则上升组要选n/2+1个,其余的都是下降组
假设数字序列所有元素之和是 sum,而上升组的和upSum,那么下降组的和就是sum - upSum,
如果 upSum - (sum - upSum) <= t,那么当前分组就是一个可能解,而其中sum,t都是已知的,因此可以转化为如下:
upSum <= (sum + t) / 2
即,我们要从给定的数字序列中选择固定数量(n/2或者n/2+1)个,让他的和小于且最接近或等于 (sum + t) / 2。
本题数量级不大,可以当成组