拓者设计吧首页,关于seo的行业岗位有哪些,网站建设企业建站模板,做视频赚钱的好网站1055 最长等差数列基准时间限制#xff1a;2 秒 空间限制#xff1a;262144 KB N个不同的正整数#xff0c;找出由这些数组成的最长的等差数列。 例如#xff1a;1 3 5 6 8 9 10 12 13 14等差子数列包括(仅包括两项的不列举#xff09;1 3 51 5 9 133 6 9 123 8 135 9 136… 1055 最长等差数列 基准时间限制2 秒 空间限制262144 KB N个不同的正整数找出由这些数组成的最长的等差数列。 例如1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括两项的不列举 1 3 5 1 5 9 13 3 6 9 12 3 8 13 5 9 13 6 8 10 12 14 其中6 8 10 12 14最长长度为5。 Input 第1行NN为正整数的数量(3 N 10000)。
第2 - N1行N个正整数。(2 A[i] 10^9) Output 最长等差数列的长度。 Input示例 10
1
3
5
6
8
9
10
12
13
14 Output示例 5 1 #includestdio.h2 #includestdlib.h3 #includeiostream4 #includequeue5 #includemath.h6 #includestring.h7 #includealgorithm8 using namespace std;9 typedef long long LL;
10 short int dp[10005][10005];
11 LL ans[10005];
12 using namespace std;
13 int main(void)
14 {
15 int i,j;
16 for(i 0; i 10000; i)
17 {
18 fill(dp[i],dp[i]10001,2);
19 }
20 int n;
21 scanf(%d,n);
22 for(i 1; i n; i)
23 {
24 scanf(%lld,ans[i]);
25 }
26 sort(ans1,ansn1);
27 int l ,r;short int an 2;//printf(%d\n,n);
28 for(i n-1; i 1 ; i--)
29 {
30 l i-1;r i1;
31 while(l 1r n)
32 {
33 if(ans[l] ans[r] (LL)2*ans[i])
34 {
35 dp[l][i] dp[i][r] 1;
36 an max(an,dp[l][i]);
37 l--;
38 }
39 else if(ans[l] ans[r] (LL)2*ans[i])
40 {
41 r;
42 }
43 else l--;
44 //printf(%d\n,dp[l][i]);
45 }
46 }
47 printf(%d\n,an);
48 return 0;
49 } 转载于:https://www.cnblogs.com/zzuli2sjy/p/5854981.html