PAT資料結構 01 複雜度1 最大子列和問題

2021-07-24 21:46:18 字數 1424 閱讀 1742

題目:

#include using namespace std;

int maxsubseqsum2(int a, int n);

int maxsubseqsum3(int a, int left, int right); //(陣列名,元素左起0,元素終點n-1)

int maxsubseqsum4(int a, int n); //(陣列名, 元素個數)

int main()

// int maxsum = maxsubseqsum4(numseq, n);

int maxsum = maxsubseqsum3(numseq, 0, n-1);

if(maxsum< 0)

coutmaxsum = thissum; //則更新結果

} //j迴圈結束

} //i迴圈結束

return maxsum;

}int comparethreenums(int a, int b, int c)

// 演算法3 分而治之

int maxsubseqsum3(int a, int left, int right)

//list不只乙個元素,二分+治之 遞迴,獲得左右最大

int middle = (left + right) / 2;

leftmax = maxsubseqsum3(a, left, middle);

rightmax = maxsubseqsum3(a, middle+1, right);

//尋找跨越邊界的最大

// int templeftmax, leftbordermax = 0; //未顯式賦值,造成錯誤假內容

// int temprightmax, rightbordermax = 0;

int templeftmax = 0, leftbordermax = 0;

for (int i = middle; i >= left; i--)

} int temprightmax = 0, rightbordermax = 0;

for (int i = middle+1; i <= right; i++)

} int middlemax = rightbordermax + leftbordermax;

int maxsum = comparethreenums(middlemax, leftmax, rightmax);

return maxsum;

}int maxsubseqsum4(int a, int n) else if (thissum < 0)

} //此題裡,不需要記錄最大和的具體項,發現新最大立刻更新,當前和已經小於0時,則加後面的大項必然可以大過加已有的負數

return maxsum;

}

資料結構 PAT 01 複雜度1 最大子列和問題

01 複雜度1 最大子列和問題給定k 個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入第1行給出正整數k 100 000 第2行給出 k個整數,...

PTA 資料結構 01 複雜度1 最大子列和問題

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

1資料結構 複雜度問題

p3 03 資料結構與演算法概述 演算法 p4 04 演算法分析 時間複雜度分析1 2 事前分析估算方法 3 在研究演算法的效率時,我們只考慮核心 的執行次數,這樣可以簡化分析。p5 05 06演算法分析 時間複雜度分析2 3 p7 07 演算法分析 時間複雜度分析4 p808 演算法分析 時間複雜...