题解 | #合唱队#

合唱队

http://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

会超时

def func(num,people): lst = [1]*num for i in range(1,num): # i表示后一个人 for j in range(i): # j表示前一个人 if people[j] < people[i]: # 当后一人比前一人高时 lst[i] = max(lst[i],lst[j]+1) # 到后一人为止,当前人数为前人+1或自己中更大的一个 return lst

while 1: try: num = int(input()) people = input().split() people = [int(i) for i in people] left = func(num,people) # 从左往右排每个位置最大数 right = func(num,people[::-1]) # 从右往左排每个位置最大数 stu_list= [left[i]+right[~i]-1 for i in range(num)] # 实际是左顺序与右逆序相加后减一 print(num-max(stu_list)) # 出列数 except: break

全部评论

相关推荐

_mos_:我以为手抄报简历就已经很顶了,没想到还有表格简历
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务