优化完了,但突然发现题看错了,要求求长度不小于F的连续子数列的最大平均值
给一个长度为N的一维数组,设定一个F,在N中找F个连续的数,使这F个数的和最大(这是算法问题翻译过来的意思,主要就是求最大和)
怎么对如下代码做优化呢?
#include<stdio.h>
void main()
{
int N,i,j,k,n[100010];
float sum,max=0,F;
scanf("%d%f",&N,&F);
for(i=0;i<N;i++)
scanf("%d",&n[i]);
for(i=0;i<N;i++)
{
sum=0;
for(j=i;j<F+i;j++)
{
sum+=n[j];
}
if(sum>max) max=sum;
}
printf("%.0f",max*1000/F);
}
先让sum等于前F个数的和,然后从F+1个数开始循环,sum加上第F+i这个数,减去第i个数,然后更新最大值,这样只用遍历一遍数组