7 1 最大子列和問題

2021-08-25 23:00:49 字數 974 閱讀 3794

這道題在陳越姥姥的資料結構課中出現了,姥姥提出了四種解法。第一種是暴力的方法,即求出每個子串行和的大小,進行比較。第二種是在第一種的方法上稍加優化,減少累加次數。

第三種演算法叫「分而治之」,把乙個陣列一分為二,一直分下去,直到左右兩端各乙個元素。此時求出左端子序列的最大值,求出右端子序列的最大值,再求出跨越左右兩端子串行的最大值。三個最大值中最大的那乙個,才是這個區間內子串行和的最大值,大於零將其返回,否則返回0。最終是分成單個元素的,同理返回即可。這裡用到的遞迴的演算法,是我自己寫的,可能不夠簡潔,不過還是能夠通過測試點的。其複雜度為o(nlogn)。

#includeusing namespace std;

int getmax(int a, int b);

int fun(int a, int b);

int k, array[100000];

int main()

maxsum = fun(0, k - 1);

printf("%d", maxsum);

}int fun(int a, int b)

} for(int i = (a + b) / 2 + 1; i <= b; i++)

} tempc = leftmax + rightmax;

max = getmax(tempa, tempb);

max = getmax(tempc, max);

}else

if(max > 0) return max;

else return 0;

}int getmax(int a, int b)

#includeusing namespace std;

int main()

for(int i = 0; i < k; i++)else if(thissum < 0)

} printf("%d", maxsum);

}

7 1 最大子列和問題

給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資料特點如下 資料1 與樣例等價,...

7 1 最大子列和問題

7 1 最大子列和問題 20 分 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試...

7 1 最大子列和問題

題目如下 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資料特點如下 輸入第1行...