分治法:
#includeusing namespace std;
#include//給乙個陣列,返回它的最大連續子串行的和
//子向量的長度至少是1
int findgreatestsumofsubarray(vectorarr, int left, int right)
else
}int rights = 0;
int rightmaxsum = 0; //右半邊子串行最大和
for (int i = middle + 1; i <= right; ++i)
}int middlesum = leftmaxsum + rightmaxsum; //中間最大和 = 左半邊最大和加右半邊最大和
sum = leftsum > rightsum ? leftsum : rightsum; //左和右的最大和值比較,將大的先賦給sum
sum = middlesum > sum ? middlesum : sum; //sum再和中的比較,大的賦給sum
} return sum;
}int main()
; vectorarr(a, a + sizeof(a) / sizeof(a[0]));
int len = arr.size();
cout << findgreatestsumofsubarray(arr, 0, len - 1) << endl;
system("pause");
return 0;
}
和最大子串行
問題描述 第一行輸入乙個正整數n 1 n 100001 第二行輸入n個整數a 0 a 10000 求該組整數子串行最大的和。解決這個問題應該考慮輸入n較大的情況,也就是說,輸入100000個數字判斷它的和最大子串行應當也能很快地算出來。我看過很多求解的 有三重for迴圈的,有兩重for迴圈的,也有使...
最大子串行和
最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。比如的最大子串行就是 它的和是8,達到最大 而 的最大子串行是,它的和是6。找最大子串行的方法很簡單,只要前i項的和還沒有小於0那麼子串行就一直向後擴充套件,否則丟棄之前的子串行開始新的子串行,同時我們要記下各個子串行的和,最後找到和最大的子...
和最大子串行
時間限制 1 sec 記憶體限制 512 mb 提交 3 解決 3 提交 狀態 討論版 對於乙個給定的長度為n的整數序列a,它的 子串行 的定義是 a中非空的一段連續的元素 整數 你要完成的任務是,在所有可能的子串行中,找到乙個子串行,該子串行中所有元素的和是最大的 跟其他所有子串行相比 程式要求你...