第31224题 单选题
使用C++线性动态规划求解最长严格上升子序列(LIS)时,下列状态定义和转移方程正确的是?

给定长度为n的整数数组nums(下标从0到n-1),要求返回数组中最长的严格递增子序列的长度,子序列不要求元素在原数组中连续。

A

定义dp[i]表示以第i个元素结尾的最长上升子序列长度,转移方程为dp[i] = dp[j] + 1,其中0≤j<i且nums[j]<nums[i]

B

定义dp[i]表示以第i个元素结尾的最长上升子序列长度,转移方程为dp[i] = max(1, max{ dp[j]+1 | 0≤j<i 且 nums[j]<nums[i] })

C

定义dp[i]表示前i个元素的最长上升子序列长度,转移方程为当nums[i]>nums[i-1]时dp[i] = dp[i-1]+1,否则dp[i] = dp[i-1]

D

定义dp[i]表示前i个元素的最长上升子序列长度,转移方程为dp[i] = max(dp[i-1], dp[i-2]+1),其中nums[i]>nums[i-2]

程序运行统计
暂无判题统计
提交0次 正确率0.00%
答案解析