求和最大的子段

2021-09-05 12:26:25 字數 854 閱讀 5165

給你一串數字,可正,可負,可零。讓你找到其中累計和最大的子段的和,並且返回這個和。

我們給出四中解決方案,這四種解決方案的時間複雜度從高到低。

列舉所有的陣列所有的區間,求出累加和,比較大小,最後得出結果。

時間複雜度為o(n^3).

**:

#include#include#include#include #include#include#include#include#include#include#include#include#include#include#include#include#include#include#define mod 1000000007

#define maxn 10000

typedef long long ll;

using namespace std;

int arr[maxn];

int n;

int getmax()

}return mainsum;

}int main()

}return mainsum;

}int main()

for(int j=mid;j>=1;j--)//從mid位置往前推,找出以mid位置為結尾的和最大的子區間的和

middle=rightsum+leftsum;//得到跨mid位置的和最大的子區間的的

return max(max(right,left),middle);//返回最大那個

}int main()

mainsum=sum;

}return mainsum;

}int main()

1081 子段求和

1081 子段求和 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出乙個長度為n的陣列,進行q次查詢,查詢從第i個元素開始長度為l的子段所有元素之和。例如,1 3 7 9 1,查詢第2個元素開始長度為3的子段和,1 1。3 7 9 19,輸出19。input 第1行 ...

最大子段求和

includeusing namespace std int main if temp 0 捨棄之前的子段 cout 舉個例子,a 4 顯然最大子段和是 9 2 11 該 從頭到尾掃瞄一次,如果只有一項,則最大子段和是它本身,不管是否為負數還是正數。假設第二項為正數的話,顯然最大子段和就是第二項本身...

1081 子段求和(字首和)

給出乙個長度為n的陣列,進行q次查詢,查詢從第i個元素開始長度為l的子段所有元素之和。例如,1 3 7 9 1,查詢第2個元素開始長度為3的子段和,1 1。3 7 9 19,輸出19。輸入第1行 乙個數n,n為陣列的長度 2 n 50000 第2 至 n 1行 陣列的n個元素。10 9 n i 10...