輸入一組整數,求出最大子串行的和.
例如:序列: - 2 11 - 4 13 - 5 - 2,則最大子串行和為20。
序列: - 6 2 4 - 7 5 3 2 - 1 6 - 9 10 - 2,則最大子串行和為16
遍歷是一種方法:
#include int max_son(int *p, int len)
} }return max_sum;
}int main()
; int array = ;
int len = sizeof(arr) / sizeof(arr[0]);
int lena = sizeof(array) / sizeof(array[0]);
printf("%d\n", max_son(arr, len));//20
printf("%d\n", max_son(array, lena));//16
return 0;
}
還有一種思想。聯機演算法。
重點的乙個思想是:如果a[i]是負數那麼它不可能代表最大序列的起點,因為任何包含a[i]的作為起點的子串行都可以通過用a[i+1]作為起點來改進。
類似的有,任何的負的子串行不可能是最優子串行的字首。
一組陣列中最大子陣列之和 (更新)
1 xiaosong du 2015 3 22 2 include 3 include 4 using namespace std 5 define n 100067 void main 8 19 cout 2021 maxd a 0 22 for int i 0 i n i 2330 if d 0...
C 求整數陣列中和最大子串
現在有乙個陣列,陣列裡面有正數或者負數。如何計算其子串中和的最大值。比如,最大值的子串就應該是值為6 下面我直接給出 了,很簡單的,只是當時自己想錯了,所以這裡我把 重新寫了一遍 1 時間演算法為o n 2 2int maxseqint int a,int n 12 13 return s2 14 ...
輸入一組數,構建有序鍊錶 (C語言實現)
要求說明 輸入一組數,構建有序鍊錶。整體思路 用陣列儲存這組數,每次都去找最小值,把最小值構建結點並使用頭插法插入到單鏈表中。然後將該值刪掉 為簡便起見,把值弄成max 這裡使用的是類直接插入的排序方法。實現 include include define max 1000000 單鏈表結構體定義 t...