作业帮 > 英语 > 作业

要求:A quadratic solution is not accepted

来源:学生作业帮 编辑:百度作业网作业帮 分类:英语作业 时间:2024/06/17 08:42:27
要求:A quadratic solution is not accepted
let array A contain N positive numbers.determine the maximun value of A[j]/A[i],where j>i.for instance,if the array contains 4,6,,2,4,5 ,1 ,3,then the maximuc value is 3,determined by the seventh and eighth element.
比如数组 1000 10001 1002 10 100 200 300 3 10 2 6 1 3
最大是A[7]/A[4]=300/10=30
给个小于O(n^2)的算法~
要求:A quadratic solution is not accepted
double Minimum=data[1],Answer=0.;
for(int i=2;i
再问: 你理解错了 他要求是最大的A[j]/A[i],并且j >= i~~
再答: 我理解错了吗?我大体说说。 对于任意的a[j]/a[i],当 j 确定时要使a[j]/a[i]尽量大,a[i]就要最小,当然也就是取min{a[i]} i=1..j-1。如果直接循环就是O(n^2)的,但是这个值可以递推。如果设 f[i]=min{a[j]} j=1..i,则有 f[i]=min(f[i-1],a[i])。程序实现时可以直接用一个变量滚动,就是Minimum这个变量。 我说的有负数的情况就需要把正数负数分开考虑,就是分别存正数的最小值和负数的最大值。 别没事就想线段数、平衡树什么的,自找麻烦。
再问: 比如数组 1000 10001 1002 10 100 200 300 3 10 2 6 1 3 最大是A[7]/A[4]=300/10=30, 而3, 2,1都比10小,这题我做出来了,前后相除,a[i]/a[i+1],存放在新数组中,然后再lg(a[i]/a[i+1]), 于是题目就变成求max sum of subsequence, 也就是O(n)时间,题目关~~hehe
再答: 教你简单的方法你不学,你就那么喜欢做最大子段和?你们学校acm队都你这水平?就没人跟你说这个题是前缀最小值?再说了,用你这个方法为什么不直接做最大子段积呢?何苦再装/B地取一个对数增大误差呢? 我的人参就是这么没有了,lz你就自重吧。我是文明人,我不说啥了。