寻找段落
寻找段落
题目描述
给定一个长度为n的序列a_i,定义a[i]为第i个元素的价值。现在需要找出序列中最有价值的“段落”。段落的定义是长度在[S,T]之间的连续序列。最有价值段落是指平均值最大的段落,
段落的平均值=段落总价值/段落长度。
输入格式
第一行一个整数n,表示序列长度。
第二行两个整数S和T,表示段落长度的范围,在[S,T]之间。
第三行到第n+2行,每行一个整数表示每个元素的价值指数。
输出格式
一个实数,保留 3 位小数,表示最优段落的平均值。
样例输入
4
3 4
5 3 -3 9
样例输出
3.500
代码:
#include<iostream>
#include<iomanip>
using namespace std;
double findValue3(int *arr,int n,int len){
double maxdemo=-0xffffff,sum;
for (int i = 1; i <= n-len+1; i++)
{
sum=0;
for (int j = i; j < i+len; j++)
{
sum+=arr[j];
}
if (sum>maxdemo)
{
maxdemo=sum;
}
}
return maxdemo/len;
}
int main(){
int n;
cin>>n;
int S,T;
cin>>S>>T;
int *arr = new int[n+1];
for (int i = 1; i <= n; i++)
{
cin>>arr[i];
}
double sum=0,max=-0xffffff;
for (int i = S; i <= T; i++)
{
double value=findValue3(arr,n,i);
if(value>max){
max=value;
}
}
cout<<setiosflags(ios::fixed)<<setprecision(3)<<max<<endl;
}
因上求缘,果上努力~~~~ 作者:图神经网络,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12649987.html