軟件工程基礎-個人項目-數獨
阿新 • • 發佈:2018-04-24
lan devel test eve 註釋 算法 post 大量 order
任務:實現一個能夠生成數獨局並且能求解數獨問題的控制臺程序。
1、GitHub:https://github.com/MiaoZhou48/SoftwareEngineeringProject
2、時間耗費
PSD2.1
|
Personnal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
Planning | 計劃 | 40 | 40 |
.Estimate | .估計這個任務需要多長時間 | ||
Development | 開發 | 150 | 120 |
.Analysis | .需求分析(包括學習新技術) | 180 | 200 |
.Design Spec | .生成設計文檔 | 150 | 150 |
.Design Review | .設計復審(和同事審核設計文檔) | 60 | 60 |
.Coding Standard | .代碼規範(為目前的開發制定合適的規範) | 60 | 60 |
.Design | 具體設計 | 80 | 80 |
.Coding | .具體編碼 | 1600 | 1800 |
.Code Review | .代碼復審 | 100 | 150 |
.Test | .測試(自我測試,修改代碼,提交修改) | 200 | 250 |
Reporting | 報告 | 120 | 150 |
.Test Report | .測試報告 | 80 | 100 |
.Size Measurement | .計算工作量 | 40 | 30 |
.Postmortem & Process Improvement Plan | .事後總結,並提出過程改進計劃 | 50 | 40 |
合計 | 2910 | 3190 |
3、解題思路:
此項目可以細分為兩個功能:生成數獨、解數獨。
生成數獨我考慮采用的是回溯的方法,對殘缺數獨不斷求解,從而得到相應數量的完善的數獨。
確定好方法之後便是漫長的學習之路,參考了相應的回溯算法的博客以及其他算法的數獨生成博客。
在學習過程中也見識到了很多新的思路生成數獨,比如說對一個已經合理的數獨進行變換,然後判斷其在變換之後是否依然是符合數獨規範。通過這種方式生成數獨,首先會保證結果的互異性,其次相比於回溯不需要大量的計算,節省了大量的時間。
但是由於已經開始用回溯算法寫了,所以之後的改進階段會再嘗試一下敢變思路。
4、設計實現過程
程序主體是3個函數
judge():解數獨函數中用此函數判斷回溯條件。
solve():具體的解函數本體。
construct():構建函數。
封裝成函數有利於代碼的復用,與此同時提升了程序的簡潔性和可讀性。
函數邏輯說明:
5、性能改進及思路
6、代碼說明(思路解釋+註釋說明)
7、實際耗時
具體的時間消耗見最上方的表格。
軟件工程基礎-個人項目-數獨