單調佇列 首尾相連陣列的最大子陣列和

2021-08-27 13:24:53 字數 1093 閱讀 6769

題目描述:給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr[i],…arr[n-1],arr[0],…,arr[j],現在請你這個acm_lover用乙個最高效的方法幫忙找出所有連續子陣列和的最大值(如果陣列中的元素全部為負數,則最大和為0,即乙個也沒有選)。

輸入:輸入包含多個測試用例,每個測試用例共有兩行,第一行是乙個整數n(1=

輸出:對於每個測試用例,請輸出子陣列和的最大值。

樣例輸入:

6

1 -2 3 5 -1 2

56 -1 5 4 -7

樣例輸出:

10

14

#include#include#include#include#include#include#include using namespace std;

const int max = 110000 * 2;

int sum[max];

struct q q[max];

int front;

int rear;

void push(int id, int v)

}int query(int id)

if (front > rear)

return 0;

return q[front].v;

}void print_q()

int main()

for (i = 1; i <= 2 * n; i++)

sum[i] += sum[i - 1];

rear = -1;

front = 0;

push(0, 0);

int ans = 0;

for (i = 1; i <= 2 * n; i++)

printf("%d\n", ans);

} return 0;

}

首尾相連陣列的最大子陣列和

1.求0 n 1的最大子陣列和 m 1 2.求跨越 n 1和0的最大子陣列和,分別求從0開始的最大和m 21,從n 1開始的最大和m 22,分別記錄得到最大和的位置pi,pj,這裡分兩種情況考慮 a.pib.pi pj,則求0 n 1的最小子陣列和m 3,及0 n 1的和mx m max m 1,m...

首尾相連陣列的最大子陣列和

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定乙個由n個整數元素組成的陣列arr,陣列中有正數也有負數,這個陣列不是一般的陣列,其首尾是相連的。陣列中乙個或多個連續元素可以組成乙個子陣列,其中存在這樣的子陣列arr i arr n 1 arr 0 arr j 現在請你這...

二維陣列最大子陣列的和首尾相連

include using namespace std define n 4 void maxhe int a,int s,int jmin,int jmax int sum a 0 b a 0 x 0,y 0 int j 1 while j xif b 0 b a j n if jx j else...