示例:數組{3,5,7,9,-2},最大非連續子數組爲{5,9},返回14.
遞歸方式:
int Rec_GetMax(vector<int> arr,int opt) {
if (opt == 0) {
return arr[0];
}
else if(opt==1){
return arr[0] > arr[1] ? arr[0] : arr[1];
}
else
{
int A = Rec_GetMax(arr, opt - 1);
int B = Rec_GetMax(arr, opt - 2) + arr[opt];
return A > B ? A : B;
}
}
int NoRec_GetMax(vector<int> arr,int len) {
int *max = new int[len];
max[0] = arr[0];
max[1] = arr[0] > arr[1] ? arr[0] : arr[1];
for (int i = 2;i <= len;i++) {
max[i] = max[i - 1] > (max[i - 2] + arr[i]) ? max[i - 1] : (max[i - 2] + arr[i]);
}
return max[len];
}