第三章作業

2022-07-09 22:57:13 字數 1255 閱讀 8036

題目詳情:

3-3 挖地雷 (25分)

在乙個地圖上有n個地窖(n≤200),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向大序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任意一處開始挖地雷,然後沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使他能挖到最多的地雷。

輸入格式:

第一行:地窖的個數;

第二行:為依次每個地窖地雷的個數;

下面若干行:

xi yi //表示從xi可到yi,xi最後一行為"0 0"表示結束。

輸出格式:

k1-k2−…−kv //挖地雷的順序 挖到最多的雷。

輸入樣例:

5 10 20 5 4 5

1 21 4

2 43 4

4 54 6

5 60 0

輸出樣例:

3-4-5-6

1.1列出遞迴方程式:

以m[i]表示自第i個位置起能挖到的最多地雷數

以a[i]表示第i個位置的地雷數

則遞迴方程式為:m[i]=max

其中i1.2 給出填表法中表的維度、填表範圍和填表順序

①以m[i]表示自第i個位置起能挖到的最多地雷數,則所要填表為一維的表

②填表範圍為1到n

③因為i④填表的邊界,當 i = n時,m[n] = a[n]。

1.3 分析該演算法的時間和空間複雜度

時間複雜度:計算從 i 到 n 挖到最多的地雷數里,i 的取值是從1到n,而 j 的取值是從 (i+1) 到n。因此時間複雜度為o(n²) 。

空間複雜度:由於需要儲存 「地窖i 到 地窖j 是否存在通路」的情況,在本題中我用了二維陣列在儲存該資訊,因此空間複雜度為o(n²)。

2. 你對動態規劃演算法的理解

動態規劃演算法的兩個基本要素:

①最優子結構性質決定了演算法的正確性

②重疊子問題性質影響了演算法的有效性

動態規劃,其中「如何拆分子問題,分析出最優子結構性質,進而列出遞迴方程式」這一步是最關鍵的。接下來根據遞迴方程式就可以分析出填表法中表的維度、填表範圍和填表順序等。另外,表的邊界也需要特別考慮,邊界可能要附上初始值。

3. 說明結對程式設計情況

一開始接觸動態規劃演算法,對我們來說,是陌生而充滿挑戰的,未曾見過的複雜題目讓我們頭昏眼花,但在掌握基本方法後,這樣的題目卻也可以抽絲剝繭,一步步的解出答案,中途可能遇到一些疏漏的小問題也能在經過除錯後解決。

第三章作業

1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 2.程式設計求 百錢百雞 問題。雞翁一值錢五,雞母 一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?3.程式設計輸入乙個整數,計算它是幾位數字,分別輸出每一位數字,並輸出各個數...

第三章作業

第三章作業 習題5,求e的近似值 求自然對數e的近似值 includeusing namespace std int n return a int main cout 習題6 求圓周率 求圓周率的近似值 include includeusing namespace std int main cout...

第三章作業

第三章 最簡單的c程式設計 順序程式設計 例3.1 有人用溫度計測量出用華氏法表示的溫度 如64 f 今要求把它轉換為以攝氏法表示的溫度 如17.8 c 例 3.2 計算存款利息。有1000元,想存一年。有3種方法可選 1 活期,年利率為r1 2 一年期定期,年利率為r2 3 存兩次半年定期,年利率...