个人项目——生成数独并解数独【小结】

整个项目完成啦~首先在此特别感谢某位大佬从代码到github使用的极耐心各种帮助2333

重新贴上github地址:

https://github.com/Shannon2016/homework.git

然后附上PSP表格

 

PSP

Personal Software Process
Stages

预估耗时(分钟)

实际耗时(分钟)
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才算终于上传结束……

posted @ 2018-04-12 16:11  ---(´・_・`)---  阅读(459)  评论(0)    收藏  举报