当前位置:首页 » 操作系统 » 算法最大项和

算法最大项和

发布时间: 2023-06-18 18:44:59

‘壹’ 一串数字,求其中连续的10个数字最大的和的算法

你这个问题如另个一个哥们儿说的那样,性能优化空间不大,有n个数字,至少要比较n次,不过我还是优化了下,尽可能的减少求和的次数与个数。所有的循环都是序号的比较,最后找出最大序列的index后,再求和。

我用js写的,这里没用什么特别语法,你稍微改下有var的地方就能换到c#了。最后面是一个html版本,保存为html文件可以在浏览器运行。先贴核心代码

vardata=[1,32,2,5,65,33,12,56,5,9,32,33,12,67,65,2,6];//设置数字序列
varinterval=5;//设置连续数长度
varmaxindex=0;

for(vari=1,len=data.length-interval-1;i<len;i++){

varspace=(i-maxindex)>interval?interval:(i-maxindex);
varsum1=0,sum2=0;
for(varj=maxindex;j<space;j++){
sum1+=data[j];
}

for(varj=i+interval-1;j>i+interval-1-space;j--){
sum2+=data[j];
}

if(sum2>sum1){
maxindex=i;
}

}

varmaxsum=0;
for(vari=maxindex;i<maxindex+interval;i++){
maxsum+=data[i];
}

alert(maxindex+"/"+maxsum);
--------------------------------------------------------------------------------
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title></title>
<scripttype="text/javascript">
vardata=[1,32,2,5,65,33,12,56,5,9,32,33,12,67,65,2,6];//设置数字序列
varinterval=5;//设置连续数长度
varmaxindex=0;

for(vari=1,len=data.length-interval-1;i<len;i++){

varspace=(i-maxindex)>interval?interval:(i-maxindex);
varsum1=0,sum2=0;
for(varj=maxindex;j<space;j++){
sum1+=data[j];
}

for(varj=i+interval-1;j>i+interval-1-space;j--){
sum2+=data[j];
}

if(sum2>sum1){
maxindex=i;
}

}

varmaxsum=0;
for(vari=maxindex;i<maxindex+interval;i++){
maxsum+=data[i];
}

alert(maxindex+"/"+maxsum);
</script>
</head>
<body>

</body>
</html>

热点内容
多出口ip服务器 发布:2025-05-17 16:04:50 浏览:659
双指针算法 发布:2025-05-17 16:04:04 浏览:702
媒体采访问答 发布:2025-05-17 15:59:44 浏览:690
androidstudiojni 发布:2025-05-17 15:59:42 浏览:165
唱吧上传伴奏歌词 发布:2025-05-17 15:53:29 浏览:862
5g服务器怎么填写 发布:2025-05-17 15:49:39 浏览:314
c语言二级操作题 发布:2025-05-17 15:48:45 浏览:376
手机录音机在哪个文件夹 发布:2025-05-17 15:43:37 浏览:49
我的世界手机版服务器如何给管理 发布:2025-05-17 15:34:06 浏览:831
hbase与传统数据库 发布:2025-05-17 15:28:56 浏览:169