动态规划: 用dp[i]表示以i结尾的数字的最长定差子序列的长度,由于数字的范围有限,所以采用数组和偏移来实现,也可以用map实现。
class Solution {
public:
int longestSubsequence(vector
<int>& arr
, int difference
) {
vector
<int> dp(20005,0);
int A
=1;
for(int i
=0;i
<arr
.size();i
++){
dp
[arr
[i
]+10000] = 1;
if(arr
[i
]-difference
>=-10000 && arr
[i
]-difference
<=10000){
printf("%d %d\n",arr
[i
]+10000,arr
[i
]-difference
+10000);
dp
[arr
[i
]+10000]=max(dp
[arr
[i
]+10000],dp
[arr
[i
]-difference
+10000]+1);
}
A
= max(A
,dp
[arr
[i
]+10000]);
}
return A
;
}
};
转载请注明原文地址: https://mac.8miu.com/read-405597.html