HJ103 Redraiment的走法

描述
Redraiment是走梅花桩的高手。Redraiment可以选择任意一个起点,从前到后,但只能从低处往高处的桩子走。他希望走的步数最多,你能替Redraiment研究他最多走的步数吗?

本题含有多组样例输入

输入描述:
输入多组数据,1组有2行,第1行先输入数组的个数,第2行再输入梅花桩的高度

输出描述:
一组输出一个结果

# while True:
#     try:
#         n = int(input())
#         l = list(map(int,input().split()))
#         temp = 0
#         for i in range(n):
#             length = [l[i]]
#             for j in range(i,n):
# #                 print(length[::-1])
#                 for k in length[::-1]:
#                     #print(length)
#                     if l[j] > k:
#                         length.insert(length.index(k)+1, l[j])
#                         break
#             print(length)
#             if len(length) > temp:
#                 temp = len(length)
#         print(temp)
#     except:
#         break
        
        
def bushu(l):
    bushuList = [1]*len(l) #先初始化一个数组,定义每个桩点的步数都为1
    for i in range(len(l)): #遍历每个桩点i,用于计算到达i桩点需要最多的步数
        for j in range(i): #遍历到达i桩点前的每个桩点j([j,j,j,j,i])
            if l[i] > l[j]: # 如果i桩点大于j桩点,则要经过j桩点
                #遍历过程中有两种情况:1.到达i桩点的前一个是j桩点,那个i桩点的步数等于j桩点步数+1
                #2.达到i桩点不需要经过j桩点,i桩点步数默认为1,但再遍历前面的j桩点时,可能已经更新
                bushuList[i] = max(bushuList[j]+1, bushuList[i]) #取两种情况的最大值
    #print(bushuList)
    return max(bushuList)

while True:
    try:
        n = int(input())
        l = list(map(int,input().split()))
        result = bushu(l)
        print(result)
    except:
        break

你可能感兴趣的:(HJ103 Redraiment的走法)