當前位置:首頁 » 操作系統 » 演算法最大項和

演算法最大項和

發布時間: 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>

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:648
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:939
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:634
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:823
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:734
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1069
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:302
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:163
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:855
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:765