BIT软件工程个人项目——数独sudoku

BIT软件工程个人项目——数独sudoku

目录:

(点击可页内跳转)
1. 项目地址
2. PSP表格
3. 解题思路描述
——3.1初期思考
——3.2数独终局生成
——3.3求解数独
4. 设计实现
——4.1 类的组织
——4.2 类中主要成员、方法的调用关系
——4.3 单元测试的设计及代码覆盖率测试
5. 程序优化
6. 代码说明
7. 心得感悟


1. 项目地址

根据要求所有代码在更新过程中托管在github上,一有文件更改就签入。为了方便各位阅读代码,在编程过程中,我给每个文件,每个成员,每个函数方法,都做了极其详细的注释。

交上项目地址:https://github.com/EasonGuo666/MySudoku


2. PSP表格

PSP Personal Software Process Stages 计划用时(min) 实际用时(min)
PLANNING 计划 - -
----estimate 估计这个任务需要多长时间 10 10
DEVELOPMENT 开发 - -
----analysis 需求分析(包括学习新技术) 120 200
----design spec 生成设计文档 60 80
----design review 设计复审(和同事审核设计文档) 30 20
----coding standard 代码规范(为目前的开发制定合适的规范) 10 10
----design 具体设计 20 60
----coding 具体编码 1200 1800
----code review 代码复审 300 300
----test 测试(自我测试,修改代码,提交修改) 120 200
REPORTING 报告
test report 测试报告 20 60
size measurement 计算工作量 10 10
postmortem & process improvement plan 事后总结,并提出过程改进计划 180 100
合计 2080 2850

3. 解题思路描述

------3.1初期思考

最初拿到这个题的时候,心里一阵翻腾。老师让用github托管代码,这个我之前学过一些,应该问题不大。难点就在于如何设计完成题目中很多细碎的功能。其实在老师给的文档里题目中的主要功能已经被分解成了两个大的部分:“数独终局生成”和“求解数独”。剩下的就是一些性能上的优化以及命令处理时候的程序容错性要求了,例如:如果输入错误命令的话会提示错误输入;如果输入sudoku.exe -c 20和sudoku 20 -c应该都可以完成生成20个不同数独终局的功能。下面就来讨论如何生成终局和求解数独。

------3.2数独终局生成

要求是:生成规定数量的各不相同的终局。在思考过程中,我有过两个想法。
(1)最开始的想法是:对一个给定的数独终局,交换两个数的位置,这样生成的终局跟原来的终局肯定不一样。用这种方法:给定一个终局,我们可以生成45个不同的终局。但是呢,,这种方法有个弊端,有时候两个不同的终局交换数字后生成的终局可能是重复的,而且难以找到一个方法来避免这种重复。所以这种想法在我看来不是很可行。
比如:a交换1,9之后,b交换4,5之后,下面两个终局产生的新终局是一样的。
a:······························b:
1 2 3 4 5 6 7 8 9············9 2 3 5 4 6 7 8 1
4 5 6 7 8 9 1 2 3············5 4 6 7 8 1 9 2 3
7 8 9 1 2 3 4 5 6············7 8 1 9 2 3 5 4 6
2 3 4 5 6 7 8 9 1············2 3 5 4 6 7 8 1 9
5 6 7 8 9 1 2 3 4············4 6 7 8 1 9 2 3 5
8 9 1 2 3 4 5 6 7············8 1 9 2 3 5 4 6 7
3 4 5 6 7 8 9 1 2············3 5 4 6 7 8 1 9 2
6 7 8 9 1 2 3 4 5············6 7 8 1 9 2 3 5 4
9 1 2 3 4 5 6 7 8············1 9 2 3 5 4 6 7 8

(2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值