描述
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









网友评论