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;
}
}
}
}性能