Sicily 最大和 期末演算法機考模擬題

2021-08-03 12:11:30 字數 663 閱讀 8452

從數列a[0], a[1], a[2], …, a[n-1]中選若干個數,要求相鄰的數不能都選,也就是說如果選了a[i], 就不能選a[i-1]和a[i+1]. 求能選出的最大和.

1 <= n <= 100000, 1 <= a[i] <= 1000

請為下面的solution類實現解決上述問題的函式maxsum,函式引數a是給出的數列,返回值為所求的最大和.

class solution 

};

例1:a = ,答案為5.

例2:a = ,答案為6.

本題考查動態規劃,要求找出能得到最大和的選擇方法。設定兩個陣列用於儲存不同的選擇情況。

將題目給的陣列遍歷一次;

陣列a儲存的是不選擇當前這個數時的總和;因為不選當前的數字,所以前乙個數字可選也可以不選,取總和較大的情況即可。(即max(a[i - 1], b[i- 1])

陣列b儲存的是選擇當前這個數時的總和;所以前乙個數字必定沒有選,即總和為b[i] = a[i - 1] + a[i];

最後的結果從a[s -1],b[s - 1]中選出較大的乙個即可。

class solution 

return max(a[s - 1], b[s - 1]);

}};

Sicily 會議安排 演算法期末機考模擬題

n個會議要同時舉行,參會人數分別為a 0 a 1 a n 1 現有m個會議室,會議室可容納人數分別為b 0 b 1 b m 1 當a i b j 時,可以把會議i安排在會議室j,每間會議室最多安排乙個會議,每個會議最多只能安排乙個會議室.求最多安排多少個會議.1 n,m 100000,每個會議的參會...

關於子串行最大和的幾種演算法

所謂最大子列和,就是給出乙個序列,找到其中一段連續的子串行,並且該子串行的和最大。如序列 2 3 1 5 5 3 3 顯然該序列子串行 2 3 1 有最大和 6 今天,說三種方法來求解此問題。一,最笨的一種方法 include int main void if s max max s printf ...

演算法總結 DP 求子陣列的最大和

快要畢業了,逐步把之前做過的一些演算法和資料結構,專案相關資料總結整理一下,一來溫習一下之前的知識,二來記錄下學習點滴,方便之後的學習。plain view plain copy print?題目描述 給定乙個整數陣列,陣列中有正數也有負數,陣列中連續的乙個或者多個整數組成乙個子陣列,每個子陣列都有...