軟體工程實踐第三次作業

2022-08-02 23:21:16 字數 1897 閱讀 6152

1、github**

先上我的psp

psp2.1

personal software process stages

預估耗時(分鐘)

實際耗時(分鐘)

planning

計畫20

40estimate

估計這個任務需要多少時間

3601000+

development

開發120

120analysis

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

10060

design spec

生成設計文件

5030

design review

設計複審

2020

coding standard

**規範 (為目前的開發制定合適的規範)

1030

design

具體設計

3090

coding

具體編碼

120180

code review

**複審

60180

test

測試(自我測試,修改**,提交修改)

30120

reporting

報告30

60test repor

測試報告

6060

size measurement

計算工作量105

postmortem & process improvement plan

事後總結, 並提出過程改進計畫

2060

合計拿到這道題的時候我覺得,一張數獨我自己也就十分鐘左右就能做出來,而且是一直在重複行列宮搜尋數字,計算機肯定能很快的解決啊。好簡單的一道題。

(1)了解題目

(2)大致思路

數獨無非就是行列宮不能出現重複的數字,獨那麼我認為n階數每個格仔都有滿的n種可能性,然後根據已經填入的數字刪除可能性,然後將沒有可能性為1的數字填出,再將新填出的表盤的數字進行遍歷,再在行列消除可能性,就迴圈這個過程就好了。稍稍想了一會兒後認為宮的獨立性有點難,所以先做357階沒有宮的數獨。

(3)具體思路

後來總結了一下,辦法就是不斷的將已填資料的行獨立性、列獨立性、宮獨立性,輻射到整個盤面上,然後使盤面上某個空格唯一時,將該資料填入表盤,然後將該數字的獨立性再次輻射出去,以此類推就能解決整個數獨問題。以乙個三階數獨為例:

因此建立陣列時一共需要建立4個

int outmap[10][10];//儲存盤面以及填入的數字

bool map[10][10][10];//前兩位為座標,第三位為數字,有可能性為1,無可能性為0

int flag[10][10];//表示每個格仔內可能性的數量

int newmap[10][10];//表示每次填出的新表盤

之後只需要不斷回溯行獨立列獨立宮獨立,直到數盤內的每乙個數字都被填上為止時輸出陣列就完成了

行和列獨立性驗證,如上面圖示的例子,每個數字在輻射過它的獨立性之後,其本身其實已經沒有作用了。實際上,每個數字只需要輻射一次,因此我們只需要把每次新填入的數字輻射其獨立性就好了,所以在每一次輻射獨立性後都會把newmap清零,使得下一次不會重複遍歷。

for (int i = 0; i < t; i++)}}

}}if (map[k][j][newmap[i][j]] = true || flag[k][j] != 1)}}

}}}newmap[i][j] == 0;//清零每乙個已經做過可能性消除的數字}}}}}

總結

軟體工程實踐2019第三次作業

github psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 小時 planning 計畫1h 0.5h estimate 估計這個任務需要多少時間 22h21h development 開發5h 3hanalysis 需求分析 包括學習新技...

軟體工程實踐2019第三次作業

psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫60min 60min estimate 估計這個任務需要多少時間 24h25h development 開發5h 3hanalysis 需求分析 包括學習新技術 2...

2019軟體工程實踐第三次作業

只能用於三宮格的菜鳥 psp psp預估耗時 小時 實際耗時 小時 計畫1 0.5估計這任務需要多少時間 2719開發3 2需求分析31 生成設計文件12 設計複審 20.5 規範 1.50.5 具體設計 20.5 具體編碼63 複審35 測試22報告 11測試報告 10.5 計算工作量 10.5 ...