📅  最后修改于: 2023-12-03 15:07:34.598000             🧑  作者: Mango
给定一个长度为n的整数数组,找到最长的连续递增序列(子数组)的长度。
对于每个测试用例,在新行中打印出最长的连续递增序列的长度。
输入:
2
7
2 3 4 1 2 3 4
8
1 2 2 3 4 5 6 7
输出:
4
7
这道题目可以使用动态规划来解决。我们可以定义一个状态数组dp,其中dp[i]表示以元素i结尾的最长连续递增序列的长度。则状态转移方程为:
if arr[i] > arr[i-1]:
dp[i] = dp[i-1] + 1
else:
dp[i] = 1
最终的结果即为dp数组中的最大值。
def longest_increasing_subsequence(arr):
n = len(arr)
dp = [1] * n
for i in range(1, n):
if arr[i] > arr[i-1]:
dp[i] = dp[i-1] + 1
return max(dp)
t = int(input())
for i in range(t):
n = int(input())
arr = list(map(int, input().split()))
length = longest_increasing_subsequence(arr)
print(length)