程式設計思想
此次題目是在上次題目的基礎上演變而來的,所以首先需要解決上次的問題。乙個陣列中為有正有負的整數,需要求出該陣列所有子陣列的和的最大值。需要明白一點,乙個子陣列的和最大,那麼這個子陣列的前n-1個數之和一定會大於0 。如果前n-1個數之和小於0,那麼第n個數便可以獨立成乙個子陣列而且該子陣列的和大於原來子陣列的和。所以在遍歷陣列時,用乙個變數存放遍歷到當前數字的和,如果當前的和大於0,則繼續遍歷,否重下乙個數字重新計算和。這樣便可以求出乙個陣列中最大子陣列之和了。此次的問題是要將陣列首尾連線起來求最大子陣列之和,所以只需要遍歷陣列兩次就行了。
出現的問題:
如果只設定為將陣列遍歷兩次,那麼有所求子陣列之和包含的元素個數會大於原來陣列的元素個數。
解決方案:
陣列是迴圈的,所以我們需要求出從第1個元素到第n個元素的之間的最大子陣列之和,第2到到第1個元素,第3個到第2個元素……第n個到第n-1個元素之間的最大子陣列之和,然後從之中選出最大的值。但是這樣演算法時間複雜度將不再是o(n),而是o(n2)。
程式源**:
1結果截圖:public
class
maxvalueofsubarray ;
6int len =array.length;
7int sum = 0;
8for(int i = 0; i < len; i++)
917 system.out.println("最大子陣列之和為:"+sum);18}
1920
public
static
int getmaxsubarray(int array,int begin,int
end)
21//
求陣列array在下標begin和end之間的最大子陣列之和,如果下標越界,則取下標對陣列長度的餘數
2237
return
sum;38}
3940 }
總結:
軟體工程作業05
這個作業屬於哪個課程 這個作業要求在 homework 11437 這個作業的目標 其他參考文獻無學號 20189660 優點虜勢總結 通過對雲班課的測評總結到,軟體需求要注重使用者體驗,應該多問卷調查來改進軟體所遇到的問題。如果我是雲班課的開發者,應該有使用者反饋功能及時處理軟體出現的bug,減少...
軟體工程作業05
軟體工程 作業要求 homework 10458 作業目標 結對程式設計完成家族樹的實現 作業正文 見下文參考文獻 psp psppersonal software process stages pianing 計畫estimate 估計這個任務需要多少時間 development 開發analys...
軟體工程個人作業
題目 寫乙個程式,分析乙個文字中各個詞出現的頻率,並且把頻率最高的10個詞列印出來。我覺得這個問題主要是讀取檔案,然後統計個數和排序幾個點。以前也做過類似的讀檔案,我直接用的以前讀文字的方式,即ifstream方式,使用完檔案還需關閉,然後使用了結構體和類定義單詞,這樣方便在文字中尋找,不用判斷前後...