現代程序設計 做業 2

咱們上節課講了 返回整數數組中最大子數組的和 這個問題。 咱們第二次做業在這個基礎上擴展。html

程序要使用的數組放在一個叫 input.txt 的文件中,  文件格式是:算法

數組的行數,設計模式

數組的列數,數組

每一行的元素,  (用逗號分開)架構

每個數字都是有符號32位整數, 見 MSDN 的定義.  固然, 行數和列數都是正整數。工具

例以下面的文件說明數組是有1行, 6列, 元素依次是:  5, 6, –3, 8, –9, 2單元測試

image

 

用你選擇的語言 (C, C#, C++, Java) 在Windows 系統下實現下面的功能, 並做單元測試和統計測試覆蓋率。 建議用VS2017 / 2019, 若是你有其它的工具能夠達到一樣的效果, 歡迎使用。學習

 

1) 絕大部分同窗都已經作出來了單維數組的 求數組中最大子數組的和, 可是你不妨試一試:測試

把你的程序編譯爲可執行文件, 而後執行 例如  maxsum.exe  <file name>ui

輸出就是最大子數組的和, 上面的例子就應該輸出 16.

 

若是輸入的數組很大,  而且有不少大的數字,  就會產生比較大的結果 (考慮一下數的溢出), 請保證你的程序能正常輸出。

另外, 若是輸入文件的參數有錯誤, 這個程序應該能正常退出, 並顯示相應的錯誤信息。 任何輸入錯誤都不能致使你的程序崩潰 (對的,  TA 會模擬一些有錯誤的文件來檢查)。

 

2) 若是上面的問題解決了,  那咱們就順利地進入第二個階段 - 處理二維數組.   在這個階段, 咱們要求二維數組的子數組必須是矩形的

image   image

maxsum.exe  <file name>

會返回 28

這是一個比較大的數組的例子:

image

 

3) 若是 「子數組」 並不要求是一個矩形, 而是聯通的元素便可 (上下或左右相鄰即視爲聯通),  那解法會是怎麼樣呢?

上面文件的正解就是:

image (圖 3-1,一個簡單的例子)

請實現這一算法, 命令行要加一個參數, 表示這一特殊要求:

maxsum.exe  /a <file name>

輸出是: 50

注: 考慮到同窗們的反饋, 在這一問中, 能夠假設數組的長度和寬度不大於 32.  同時,在和同窗們的討論中,咱們列舉了幾種較有意思的形狀,見下。

image (圖3-2,兩個大正數 (50)經過它們之間的最小權值路徑相連)    

 image (圖 3-3,子連通圖中有環)

image (圖 3-4,和是135,是三個大正數經過公共的最小權值聯通路徑相連)

image (圖3-5,和圖3-4 同樣,可是此圖的解法是經過兩兩大正數之間的最小連通圖獲得。它們的和是 134,不是最佳)

 

4) 在步驟 2) 的基礎上, 咱們還能夠作另外一個擴展, 假設數組的一頭一尾在水平方向上是首尾相連的。 咱們用 /h 表示它在水平方向上相連。 若是在垂直方向上相連能夠麼?  固然能夠, 咱們用 /v 表示它在垂直方向相連。 這樣, 咱們有:

maxsum.exe  /h <file name>

maxsum.exe  /v <file name>

 

5) 那麼, 能夠同時 /h  /v 麼?  我想是能夠的。 這個矩陣會成一個什麼樣呢?  是球形, 仍是…?

image

 

啊, 是個輪胎, 可能仍是備胎!

maxsum.exe  /v /h <file name>

會輸出什麼呢?

固然, 咱們還有: maxsum.exe  /v /h /a <file name>

6) 哇, 還有第六步? 彷彿聽到同窗們叫苦不迭…   那就算了, 之後再說 Smile 

 

要求仍是老一套:

a) 代碼都簽入你的 GitHub,  TA 用你的代碼編譯並運行他們的測試用例,  來驗證你的程序的正確性。

b) 博客

描述在這麼多類似的需求面前, 你怎麼維護你的設計 (父類/子類/基類, UML, 設計模式,  或者其它方法) 讓整個程序的架構不至於崩潰的?

給出你作單元測試/代碼覆蓋率的最終覆蓋率的報告, 用截屏顯示你的代碼覆蓋率

閱讀 工程師的能力評估和發展 和相關文章, 在完成做業的時候記錄本身花費的時間, 並填下表。若是你對有些術語不太清楚,請查看教材和其它資料。若是你認爲你不須要作某個步驟, 那就跳過去。 

你在這個做業中學到了什麼?  有什麼好的設計值得分享?  感想如何 (太容易 / 太難 / 太無趣)?

 

 

 

Personal Software Process Stages

估計的時間(分鐘) 

實際花費的時間 (分鐘)

Planning

計劃-把工做細化並大體安排次序

   

Development

開發

   

·         Analysis

·         需求分析 (包括學習新技術)

   

·         Design Spec

·         生成設計文檔

   

·         Design Review

·         設計複審 (和同事審覈設計文檔)

   

·         Coding Standard

·         代碼規範 (制定合適的規範)

   

·         Design

·         具體設計

   

·         Coding

·         具體編碼

   

·         Code Review

·         代碼複審

   

·         Test

·         測試(自我測試,修改代碼,提交修改)

   

Reporting

總結報告

   

·         Test Report

·         測試報告

 

 

·         Size Measurement

·         計算工做量

   

·         Postmortem & Improvement Plan

·         過後總結, 並提出改進

   
Total 總計
相關文章
相關標籤/搜索