博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod1055: 最长等差数列(dp)
阅读量:6086 次
发布时间:2019-06-20

本文共 895 字,大约阅读时间需要 2 分钟。

基准时间限制:2 秒 空间限制:262144 KB 分值: 80 
 收藏
 关注
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行:N,N为正整数的数量(3 <= N <= 10000)。第2 - N+1行:N个正整数。(2<= A[i] <= 10^9)
Output
最长等差数列的长度。
Input示例
1013568910121314
Output示例
5

思路:动态规划,两边拓展,O(n^2),从这里学习的:

#include 
#include
#include
#include
#include
using namespace std ;int const maxn = 10005;int a[maxn];short int dp[maxn][maxn]; //dp[i][j]表示的是以i和j为前两个元素的AP最长值,i
= 1 ; j--) { int i = j-1 , k = j+1 ; while(i>=0 && k<=n-1) { if(a[i]+a[k]<2*a[j]) { k++; } else if(a[i]+a[k]>2*a[j]) { i--; } else { dp[i][j] = dp[j][k]+1 ; if(dp[i][j]>ans)ans=dp[i][j]; i--;k++; } } } printf("%d\n",ans); } return 0 ;}

转载于:https://www.cnblogs.com/junior19/p/6729932.html

你可能感兴趣的文章
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>