KY73 合唱队形

KY73 合唱队形

# KY73 合唱队形 
# 算法思路:求解最长递增子序列长度

def chorus(N):
    Heights = tuple(map(int, input().strip().split()))
    FlagsAscend = [1 for i in range(N)]  # 以i结尾的最大递增子序列的长度
    for right in range(1, N):  # 1 ~ N-1
        for left in range(right):  # 0 ~ right-1 
            if Heights[right] > Heights[left]:
                FlagsAscend[right] = max([FlagsAscend[right], 1 + FlagsAscend[left]])

    FlagsDescend = [1 for i in range(N)]  # 以i开头的最大递减子序列的长度
    for left in range(N-2,-1,-1):
        for right in range(N-1,left,-1):  
            if Heights[left] > Heights[right]:
                FlagsDescend[left] = max([FlagsDescend[left],FlagsDescend[right]+1])
    popMinNums = float('inf')
    for i in range(N):
        popNum = N + 1 - FlagsDescend[i] - FlagsAscend[i]
        if popNum < popMinNums:
            popMinNums = popNum
    print(popMinNums)

if __name__ == '__main__':
    try:
        while True:
            N = int(input().strip())
            chorus(N)
    except EOFError:
        pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值