第一次项目作业——数独

GitHub地址:https://github.com/ZZZ-JC/sudoku


PSP2.1

任务内容

计划完成需要的时间(min)

Planning

计划

30

 Estimate

估计这个任务需要多少时间,并规划大致工作步骤

10

Development

开发

1800

Analysis

需求分析 (包括学习新技术)

60

Design Spec

生成设计文档

-

Design Review

设计复审

-

Coding Standard

代码规范 (为目前的开发制定合适的规范)

40

Design

具体设计

-

Coding

具体编码

400

Code Review

代码复审

30

test

测试(自我测试,修改代码,提交修改)

400

Reporting

报告

420

Test Report

测试报告

360

Size Measurement

计算工作量

30

Postmortem & Process

Improvement Plan

事后总结 ,并提出过程改进计划

60

Summary

合计

3640

 

生成数独终局

我的想法就是使用深搜与回溯法来解决这个问题,为了是数独更加具有随机性,减少重复性,可以先找出数独中第一行九个数,然后根据这九个数去进行输入,面对每一个空,从1到9循环一次,并经过三次判断,即行判断、列判断以及九宫格判断,如果满足即填入该空格,然后退出函数与循环。(当然,只让第一行进行随机排序,导致数独随机性不是很强)

求解数独

同理使用深搜和回溯来做,输入一个数独残局,从头开始搜,遇到0时,则进行三次判断,即行判断、列判断以及九宫格判断,如果没问题则填入,开始搜索下一个为0的格子,如果不行,找下一个可以成功的数,如果还不行就继续回到上一步。


函数

建立随机树种子的类,生成随机数。

建立了四个函数random(),backtrace(),fc(),xuehao()。random()用于根据头文件找出1-9的随机数;xuehao()用于使生成数独终局时,第一行第一列的数字是根据我的学号生成的;fc()用于判断这个生成的随机数在当前位置与行、列、九宫格中其他数字是否冲突,冲突则舍去;backtrace()用于进行深搜一直找到合适的数独,同时他也具有在遇到不合适的数据时,回溯到上一步的作用。在生成数独终局中需要用到上述四个函数,而求解数独中只需要用到backtrace()与fc()。


性能分析图



行、列、九宫格判断

 

 深搜与回溯

 

生成随机数种子


PSP2.1

任务内容

实际完成需要的时间(min)

Planning

计划

50

 Estimate

估计这个任务需要多少时间,并规划大致工作步骤

20

Development

开发

2000

Analysis

需求分析 (包括学习新技术)

90

Design Spec

生成设计文档

-

Design Review

设计复审

-

Coding Standard

代码规范 (为目前的开发制定合适的规范)

40

Design

具体设计

-

Coding

具体编码

500

Code Review

代码复审

30

test

测试(自我测试,修改代码,提交修改)

550

Reporting

报告

500

Test Report

测试报告

420

Size Measurement

计算工作量

-

Postmortem & Process

Improvement Plan

事后总结 ,并提出过程改进计划

80

Summary

合计

4280

 

感想

这次的项目作业对于我们来说很陌生,我们之前没有接触过这样的作业,所以在完成的过程中,我们遇到了很多的问题。解决这一个个的问题便成为我们学习的一个个的脚印,在这次的作业中,我学习到了很多新东西,例如:github的注册以及上传文件的方式、对于PSP的认识、项目中类与函数的重要性。虽然完成过程很曲折,但总的下来感觉收获很多,相比,对于将来开发项目会有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值