日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软工实践第二次作业

發布時間:2024/1/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软工实践第二次作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

軟件工程實踐第二次作業
github鏈接

解體思路

一開始拿到題目,沒有仔細往后看,把題目當作解數獨了。
解數獨的話,一開始就想到大一好像寫過八皇后,也是有約束條件,然后深度搜索解決。
但是想看看有沒有什么優化,結果是看到了這篇博文數獨解法小探,里面用了五種方法:回溯法,排列組合法,精確覆蓋問題法,模擬退火法以及約束編程法,看著看著就發呆了==。在這個頁面上一臉懵逼了好久,后來發現題目看錯了,就跑去想怎么解決題目,就沒有繼續看解數獨了,現在還是懵逼中...
要生成數獨矩陣的話,其實一開始也是想到,可以用解數獨的方法來生成數獨,一個個判斷過去,不行就回溯。因為前面寫過解數獨的回溯,所以生成數獨的回溯算法就很好理解了。
查找資料的過程中,看到了《編程之美》中有關于數獨的生成方法,普通的方法也是采用回溯,還有一種方法是用置換矩陣的方法。


放出圖片是想說明,采用置換的方法,思想真的超級簡單,隨便在博客上記錄下這種思想....但考慮到作業中與學號要關聯,想到用回溯比較簡單,就采用回溯了...

設計實現

程序比較簡單,就只有兩個函數,一個check函數是否符合數獨的約束條件,一個checkInput函數檢查運行參數的合法性。至于生成數獨直接在主函數中采用兩個while循環輸出了,如果用遞歸的話,可能會消耗非常多的內存。

代碼說明

核心代碼就是兩個while循環,主要是回溯法的思想

當發現不能符合約束條件時,設置

sudoku[i][j] = 0; --k; //這個步驟非常重要,因為少了它就不可能回溯成功。在要求生成給定數量矩陣的解決辦法也是根據這個,如果都可以符合要求,我假設這個不能符合,回退一步,就可以生成多個。

測試運行

對于使用參數運行的設置

性能分析

測試時我采用直接在exe中輸出,得到的分析圖:

由于生成數獨文件直接在main中輸出了,這是main函數的分析圖

在生成多個數獨矩陣時,程序輸出占了主要。

PSP表格 (感覺寫程序時好像沒有注意這邊,現在回想可能比實際誤差非常大)

PSP2.1Personal Software Process Stages預估耗時(分鐘)實際耗時(分鐘)
Planning計劃
· Estimate· 估計這個任務需要多少時間20小時
Development開發--
· Analysis· 需求分析 (包括學習新技術)6小時8小時
· Design Spec· 生成設計文檔2小時-
· Design Review· 設計復審 (和同事審核設計文檔)--
· Coding Standard· 代碼規范 (為目前的開發制定合適的規范)10分鐘-
· Design· 具體設計2小時3小時
· Coding· 具體編碼3小時4小時
· Code Review· 代碼復審20分鐘30分鐘
· Test· 測試(自我測試,修改代碼,提交修改)1小時2小時
Reporting報告1小時2小時
· Test Report· 測試報告--
· Size Measurement· 計算工作量--
· Postmortem & Process Improvement Plan· 事后總結, 并提出過程改進計劃10分鐘20分鐘
合計15小時40分鐘20小時

思考與總結

這次的作業,做的比較匆忙。最大的收獲是對回溯法的使用。還有對git的使用更加熟練了,而且開始學會使用gitignore了,同時也學到了怎么輸入參數測試exe以及vs的使用和性能分析。一開始自己想著如何實現,后來代碼寫得一直有問題,也找不出來錯誤。好在看了網上的一些博客順利解決了。其實實現起來,沒有想象的那么復雜。遇到問題不要害怕,應該多學會Google解決。

轉載于:https://www.cnblogs.com/hish/p/7500682.html

總結

以上是生活随笔為你收集整理的软工实践第二次作业的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。