51nod1055(递推)
来源:互联网 发布:win10电脑mac地址修改 编辑:程序博客网 时间:2024/04/30 17:46
链接:点击打开链接
题意: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
代码:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>using namespace std;int a[10005];short dp[10005][10005];int main(){ int n,i,j,k,ans; while(scanf("%d",&n)!=EOF){ //dp[i][j]为以a[i]和a[j]结尾的最长 ans=1; //等差数列 for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); for(i=1;i<n;i++){ j=i-1,k=i+1; while(j>=0&&k<n){ if(a[j]+a[k]>2*a[i]) j--; else if(a[j]+a[k]<2*a[i]) k++; else{ if(dp[j][i]==0) //第一次相当于初始化 dp[j][i]=dp[i][k]=3; else //可以理解为结尾的方向不同 dp[j][i]=dp[i][k]=dp[j][i]+1; ans=max(ans,(int)dp[i][k]); j--,k++; } } } printf("%d\n",ans); } return 0;}
0 0
- 51nod1055(递推)
- 【51Nod1055】最长等差数列
- 51nod1055: 最长等差数列(dp)
- 51nod1154(递推)
- 51nod1202(递推)
- 51nod1202 dp+递推
- [51nod1167]计算递推
- 51Nod - 1639 递推
- 51nod1202-递推&规律
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- java毕向东听课笔记11(异常体系)
- aaaa
- 深入理解 Objective-C 的方法调用流程
- 关于视图方面的UI控件
- JAVA Socket 底层是怎样基于TCP/IP 实现的
- 51nod1055(递推)
- cocos2dx--TextureAtlas
- class.forName()理解
- Java_SE10-多线程,TCP通信
- iOS数据库离线缓存思路和网络层封装——原理
- InnoDB存储引擎的文件简述(表空间文件和重做日志文件)
- [4730]:We Love MOE Girls
- ZooKeeper的工作原理
- 延时程序实现的Led灯闪砾效果