要求:
• 輸入乙個整形陣列,陣列裡有正數也有負數。
• 陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
• 如果陣列a[0]……a[j-1]首尾相鄰,允許a[i-1], …… a[n-1], a[0]……a[j-1]之和最大。
• 同時返回最大子陣列的位置。 求所有子陣列的和的最大值。要求時間複雜度為o(n)。
設計思路:核心演算法同求乙個最大子陣列的和ⅱ相同,將所有陣列一遍迴圈改為無限迴圈,只需選乙個時間跳出即可。
具體**如下:
1public
static
void
main(string args)
7 system.out.print("產生的隨機數的值為:");
8for(int i = 0;i < numberlength;i++)
11 system.out.print("\n");
1213
int sum = a[0],temp = 0,left = 0,right = 1,i = -1,r = -1;
14while(1!=0)
22if(temp >=sum)
26//
如果迴圈兩圈以上,或者將所有的數全部加上,則跳出。
27if(i/numberlength > 2 || math.abs(i - left)==numberlength)30}
3132 system.out.println("最大字陣列的和為:" +sum);
33 system.out.println("邊界為:" + ((left%numberlength)+1) + " 到 " + ((right%numberlength)+1));
34 }
個人總結:在while迴圈的跳出時,需考慮周全。
返回乙個整數陣列中最大子陣列的和。
該題的意思是 如果乙個陣列為 1 5 3 19 5 3 第乙個數之後若是該數與前乙個數之和大於該數那麼將這個和替換概數 即5 1 5,5不變 而5 3 5 則將三替換為8以此類推 當乙個數與前乙個數之和再次小於這個數時,這個數為乙個下乙個的最小陣列,如5 3 19 11 5 5 則5為下乙個最小陣列...
返回乙個整數陣列中最大子陣列的和
1.題目 要求 要求程式必須能處理1000 個元素 每個元素是int32 型別的 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 2.設計思想。分別計算出所有子陣列的和,進行比較,找出最大子陣列...
返回乙個整數陣列中最大子陣列的和
1.設計思想 將一維迴圈陣列採用遍歷的方法來尋找最大子陣列,將含n個數的迴圈陣列依次從各個點斷開,產生n個n個陣列的單鏈陣列,再遍歷尋找最大子陣列。2.出現的問題 整形陣列的生成方式 3.可能的解決方案 整形陣列隨機生成,每個子陣列的資料個數也是隨機的。4.源 include using names...