團隊作業3返回整數陣列中最大子陣列的和(多個陣列)

2022-09-03 02:57:07 字數 1652 閱讀 2387

要求:

1.輸入乙個整形陣列,陣列裡有整數有負數

2.陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和

3.如果陣列a[0].........a[j-1]首尾相鄰,允許a[i-1],..........a[n-1],a[0].......a[j-1]之和最大

4.同時返回最大子陣列的位置

5.求所有子陣列的和的最大值

實驗思路:

首先隨機生成乙個二維陣列,再形成子陣列,記錄子陣列個數,然後求每個子陣列和,記錄下來。在隨機生成乙個二維陣列,生成子陣列,與上乙個陣列的子陣列結成新的子陣列,並且求子陣列的和,將子陣列和形成乙個新的陣列,進行遍歷,找到最大值。

程式**:

//返回整數陣列中最大子陣列的和(各陣列首尾相連)

#include#define n 100

using namespacestd;

//構造子陣列結構

typedef structsarray

sarray;

//構造鍊錶的儲存結構

typedef structlnode

lnode, *linklist;

//建立迴圈鍊錶

void createlist(linklist &l, int group, intn)

lnode *p;

p = newlnode;

p->data = group[n - 1];

p->position =n;

p->next = l->next;

r->next =p;}

//返回最大子陣列

sarray compare(linklist l, intlength)

else

if (maxsum[i - 1][1].sdata + r->next->data > r->next->data)

else

r = r->next;

}if (maxsum[length - 1][0].sdata > maxsum[length - 1][1].sdata)

else}

//將含n個數的迴圈陣列依次從各個點斷開,產生n個含n個陣列的單鏈陣列

sarray divide(linklist l, intlength)

sarray maxgroup[n]; //分成的各個陣列的最大子陣列的集合

for (int i = 0; i < length; i++)

sarray max = maxgroup[0]; //各個陣列的最大子陣列和的最大值

for ( i = 1; i < length; i++)

}returnmax;}

intmain()

linklist l;

createlist(l, number, length);

cout << "該陣列中的最大的子陣列和為:";

cout << divide(l, length).sdata <

cout << "該最大子陣列的起始位置為:";

cout << divide(l, length).start <

cout << "該最大子陣列的終止位置為:";

cout << divide(l, length).end <

return 0

返回乙個整數陣列中最大子陣列的和3

要求 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。如果陣列a 0 a j 1 首尾相鄰,允許a i 1 a n 1 a 0 a j 1 之和最大。同時返回最大子陣列的位置。求所有子陣列的和的最大值。要求時間複雜度為o n 設計思路 核心演算...

整數陣列中最大子陣列求和01

程式思路 1.假如a i 前面的和小於0,就把暫存的和清0 因為負數 a i 會把a i 值拉低 2.假如暫存的和大於最大和maxsum,就將這個和給maxsum maxsum儲存子陣列最大和 3.如果maxsum值為0,說明它的初始值一直沒變過,即 沒有正數!所以就找整個陣列最大那個數 返回乙個整...

返回乙個環狀整數陣列中最大子陣列之和

題目 返回乙個整數陣列中最大子陣列的和。要求 結對程式設計要求 分析 相比於上一次的任務,這次的不同在於,陣列是環狀的,求出所有可能子陣列之和的最大值,並確定該子陣列所在的位置。這時就會有兩種想法 a想到環狀,就想到了資料結構中的迴圈鍊錶,balabala。b其實也不難,只是加入環狀之後,每次搜尋子...