需要注意的地方
1.多组数据输入,需要用到while(cin>>t)
,而不能使用while(scanf("%d",&t))
。或者改成while(scanf("%d",&t)!=EOF)
这样也可以。
这道题目的关键在于(a[j]-a[i])/(j-i) 这里面想一下,这个j-i是可以被去掉的,考虑这样一种情况。相邻之间必然存在一个差值,这个差值的最大值
假设存在a,b,c b-a=100
,c-b=100
那么这个间隔(c-a)/(3-1)==(b-a)/(2-1)
。只需要考虑相邻的两个元素的最大差值即可,这个就构成了上限。
#include<iostream> #include<vector> #include<cstdio> #include<algorithm> #include<string> using namespace std; const int maxn=200000+5; long x[maxn]; int main() { int t ; for(int i=1;i<=t;i++) scanf("%d",&x[i]); int ans = -1000000000; for(int i=2;i<=t;i++) { int sum = x[i]-x[i-1]; ans = max(ans,sum); } printf("%.2lf\n",ans*1.0); return 0; }