給你一串數字,可正,可負,可零。讓你找到其中累計和最大的子段的和,並且返回這個和。
我們給出四中解決方案,這四種解決方案的時間複雜度從高到低。
列舉所有的陣列所有的區間,求出累加和,比較大小,最後得出結果。
時間複雜度為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...