演算法第三章上機報告

2022-08-10 15:24:17 字數 776 閱讀 4705

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

1、通過對題目的分析可以得到存在最優子結構和重複計算的問題,所以採用動態規劃的方法去解決,

列出遞迴方程:a[i] = a[j] ( i與j相連 ) + b[i]

a[ ] 表示從 i 出發可挖到地雷的最大數, b[ ] 表示從 在 i處可挖到的地雷

2、 因為 i的解 使用 j(j>i) 的 解去求解的,所以這裡建立一維表,從右往左填資料

3、演算法裡面需要用到 b[ ] 來儲存 i處可挖地雷數,a[ ] 儲存 從 i 出發可挖到地雷的最大數,path[ ]記錄路徑, 二維陣列 m[i][j] 儲存 i, j是否可連,所以空間複雜度為 o(n²)

演算法裡面需要求 a[i] 需遍歷 m[i][j] (遍歷上三角), 所以時間複雜度為 o(n²)

所以總的複雜度為 o(n²)

4、動態規劃我認為比較難的是列出方程和列出方程後採用什麼樣的方式去解決,如果滿足最優子結構和重複子問題的時候就可以用動態規劃的方法去解決

5、結對程式設計對於動態規劃還是有好處的,因為每個人都有各自的解決方法,可以拓展視野。

演算法第三章上機實踐報告

一 實踐題目 7 2 最大子段和 給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整數均為負數時,定義子段和為0。要求演算法的時間複雜度為o n 輸入格式 輸入有兩行 第一行是n值 1 n 10000 第二行是n個整...

演算法第三章上機實踐報告

7 1 數字三角形 30 分 給定乙個由 n行數字組成的數字三角形如下圖所示。試設計乙個演算法,計算出從三角形 的頂至底的一條路徑 每一步可沿左斜線向下或右斜線向下 使該路徑經過的數字總和最大。1.路徑經過的數字總和最大 2.每一步可沿左斜線向下或右斜線向下 1 由題目可知從上到下,只能往左或者往右...

演算法第三章上機實踐報告

引論 這是第二次在演算法課上的上機實踐了,雖然逐漸有了思考演算法的感覺,但這一次上機實踐還是並不輕鬆。關鍵在於在實驗課前對第三章的知識掌握得還不足夠,經常會因為明明知道理論上如何解題而苦於無法將其實現。不過,通過本次上機實踐,我的收穫是非常豐富的,下面用實踐課題目中的第一題 數字三角形 開始分享我的...