整个项目完成啦~首先在此特别感谢某位大佬从代码到github使用的极耐心各种帮助2333
重新贴上github地址:
https://github.com/Shannon2016/homework.git
然后附上PSP表格
PSP | Personal Software Process | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | ||
Estimate | 估计任务用时 | 60 | 40 |
Development | 开发 | ||
Analysis | 需求分析(包括学习新技术) | 180 | 240 |
Design Spec | 生成设计文档 | 60 | 120 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 | 10 | 10 |
Design | 具体设计 | 60 | 120 |
Coding | 具体编码 | 4200 | 3600 |
Code Review | 代码复审 | 240 | 240 |
Test | 测试 | 180 | 180 |
Reporting | 报告 | ||
Test Report | 测试报告 | 180 | 180 |
Size Measurement | 计算工作量 | 60 | 60 |
Postmortem & Process Improvement Plan | 总结并题出改进计划 | 60 | 60 |
Total | 合计 | 5300 | 4860 |
【整个项目的实现过程】
整个项目分为两部分,生成数独和解数独。生成数独只用了一个函数。解数独用了两个函数,一个用于回溯,另一个用于判别当前位置放置某个数字是否可行。由于对cmd不是很熟悉也不太会用c语言进行操作,故此请教大佬……大佬在github上扒了一个开源代码,然后我也就悄悄地讨要了一波2333这样就可以直接获取命令行指令啦。
整个项目做下来感觉最难的不是实现生成或解数独的功能,而是实现输入输出功能和使用github(真心地觉得github太反人类了hhhhh)。
这里附上一个github上传项目教程的链接 https://www.cnblogs.com/fengxiongZz/p/6477456.html
【性能分析(其实真的不太会写)】
怎么说呢……生成数独的部分,生成1e6组终局大约在15秒左右。这里特别感谢大佬教会我用putc(),并让我理解了printf()为什么在输出的时候会更慢。
解数独部分,本地运行解1000组数独约3s+,使用VS性能分析如下
可见解数独部分耗时最长除了DFS回溯以外,用于判别某一位置放某个数是否可行也花费了很长的时间。
【遗留的问题】(谁能告诉我要怎么破……QAQAQ)
1. 普通的DFS回溯去解数独确实很慢,每一个位置都要判定横向、纵向、小九宫格内是否都可行,但又实在想不出来什么好办法可以进行优化。
2. 用git上传项目文件为什么会有的文件夹检测不到?(如下图)当时用git上传文件时只有四个选中的文件(夹)能顺利上传到github,另外两个文件夹却怎么也上传不了,最后直接在网页上upload file才算终于上传结束……