https://github.com/kevintrey/081700537.gitgit
Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|
計劃 | 20 | 30 |
估計這個任務須要多少時間 | 360 | 480 |
開發 | 240 | 360 |
需求分析 (包括學習新技術) | 240 | 240 |
生成設計文檔 | 10 | 10 |
設計複審 | 30 | 40 |
代碼規範 (爲目前的開發制定合適的規範) | 5 | 5 |
具體設計 | 20 | 30 |
具體編碼 | 240 | 360 |
代碼複審 | 60 | 60 |
測試(自我測試,修改代碼,提交修改) | 60 | 120 |
報告 | 20 | 20 |
測試報告 | 30 | 30 |
計算工做量 | 20 | 10 |
過後總結, 並提出過程改進計劃 | 20 | 15 |
/* 判斷key填入n時是否知足條件 /
bool Check(int n, int key,int c)
{
/ 判斷n所在橫列是否合法 /
for (int i = 0; i < c; i++)
{
/ j爲n豎座標 */
int j = n / c;
if (num[j][i] == key) return false;
}github
/* 判斷n所在豎列是否合法 */ for (int i = 0; i < c; i++) { /* j爲n橫座標 */ int j = n % c; if (num[i][j] == key) return false; } if(c>3) { /* x爲n所在的小九宮格左頂點豎座標 */ int x = n / 9 / 3 * 3; /* y爲n所在的小九宮格左頂點橫座標 */ int y = n % 9 / 3 * 3; /* 判斷n所在的小九宮格是否合法 */ for (int i = x; i < x + 3; i++) { for (int j = y; j < y + 3; j++) { if (num[i][j] == key) return false; } }
}算法
/* 所有合法,返回正確 */ return true;
}函數
/* 深搜構造數獨 /
int DFS(int n,int d)
{
/ 全部的都符合,退出遞歸 /
if (n > dd-1)
{
sign = true;
return 0;
}
/* 當前位不爲空時跳過 /
if (num[n/d][n%d] != 0)
{
DFS(n+1,d);
}
else
{
/ 不然對當前位進行枚舉測試 /
for (int i = 1; i <= d; i++)
{
/ 知足條件時填入數字 /
if (Check(n, i,d) == true)
{
num[n/d][n%d] = i;
/ 繼續搜索 /
DFS(n+1,d);
/ 返回時若是構形成功,則直接退出 /
if (sign == true) return 0;
/ 若是構造不成功,還原當前位 */
num[n/d][n%d] = 0;
}
}
}
}性能