乙個簡單演算法的設計(乙個陣列中連續區間和的最大值)

2022-08-19 19:21:10 字數 1048 閱讀 8995

今天做了乙個程式,是實現結對程式設計的小專案,專案是尋找一組陣列中最大的一組子陣列(條件是陣列必須連續)。通過我們模擬一組資料:

例如:int a=

首先是選定乙個初始值假如是a[0],則第二個數是a[0]+a[1]........可以這樣理解:

即第一層從a[0]開始     設定乙個初始最大值:max

sum1=a[0];                //   max=sum1      

sum2=a[0]+a[1];           //sum2=sum1+a[1];  if(sum2>max)  max=sum2;

sum3=a[0]+a[1]+a[2]....     //sum3=sum2+a[2];  if(sum3>max)  max=sum3;

第二層從a[1]開始

sum4=a[1];               //if(sum4>max)  max=sum4;        

sum5=a[1]+a[2];           //sum5=sum4+a[2];  if(sum5>max)  max=sum5

sum6=a[1]+a[2]+a[3].......    //sum6=sum5+a[3];  if(sum6>max)  max=sum6

....................

然後通過每一層進行比較,得出一層的max,與下層繼續比較,直到找到最大相鄰的子陣列的和。

演算法模擬:

假設陣列為a;

package com.su.test;

public

class

second ; //

測試用例

int length=a.length;

int cur=a[0

];

int max=a[0

];

for(int i=0;i)

system.

out.println(max);

}}

這種演算法很好充分利用了動態規劃解決問題。而且演算法的時間複雜度為o(n).

將乙個陣列追加到別乙個陣列

問題 將乙個陣列追加到別乙個陣列 方案 1 使用array merge 在使用這個合併陣列時如果使用數字鍵,那麼索引會重新編號.如果使用字串鍵,則會導致第二個陣列中的鍵 覆蓋第乙個陣列中的同名鍵 此時第乙個陣列中的值也就消失了 如果是兩種鍵則會表現出上述兩種特徵.r array 1 2 dd 3 4...

乙個集合對映成乙個陣列

把集合對映成陣列的簡單的例子如下圖 對映方法一 點集來表示每個格 row,column 1,1 1,2 2,1 2,2 3,1 3,2 對映方法二 數字來表示每個格,pos num 12 3456 789 而通過觀察這兩種的對映方法是有關聯的,關係式如下 pos num row 1 3 column...

php 清空乙個陣列 php如何刪除乙個陣列

php如何刪除乙個陣列2020 07 10 01 16 35 php刪除乙個陣列的方法 1 使用unset函式刪除乙個陣列元素,且保持原有索引不變 2 使用 array splice 函式刪除乙個陣列元素,不保持索引 3 使用 array diff 函式,按值刪除多個元素,保持索引。php刪除陣列 ...