- #include <stdio.h>
- //最大子序列和问题
- int maxSum(int arr[], int num) {
- int thisSum, maxSum = 0;
- for (int i = 0; i < num; i++) {
- for (int j = i; j < num; j++) {
- thisSum = 0;
- for (int k = i; k <= j; k++) {
- thisSum += arr[k];
- }
- if (thisSum > maxSum) {
- maxSum = thisSum;
- }
- }
- }
- return maxSum;
- }
- int maxSum2(int arr[], int num) {
- int thisSum, maxSum = 0;
- for (int i = 0; i < num; i++) {
- thisSum = 0;
- for (int j = i; j < num; j++) {
- thisSum += arr[j];
- if (thisSum > maxSum) {
- maxSum = thisSum;
- }
- }
- }
- return maxSum;
- }
- int main() {
- int a[] = {-2, 11, -4, 13, -5, 2, -5, -3, 12, -9};
- int b[] = {0, -3, 6, 8, -20, 21, 8, -9, 10, -1, 3, 6, 5};
- printf("maxSum %d\\n", maxSum(a, sizeof(a)/sizeof(a[0])));
- printf("maxSum2 %d\\n", maxSum2(a, sizeof(a)/sizeof(a[0])));
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/2107201513187.html
来源: http://www.codesnippet.cn/detail/2107201513187.html