软件工程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/ |
---|---|
本作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
本作业目标 | 一个人的开发实战数独 |
作业正文 | 看本文章 |
其他参考文献 | 百度、https://baike.baidu.com/item/回溯法/86074?fr=aladdin |
1.我的github地址:https://github.com/xinxinstars/20177637
2.PSP的表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 75 |
· Estimate | · 估计这个任务需要多少时间 | 2880 | 2880 |
Development | 开发 | 120 | 360 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 180 |
· Design Spec | · 生成设计文档 | 40 | 60 |
· Design Review | · 设计复审 | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 70 |
· Design | · 具体设计 | 90 | 120 |
· Coding | · 具体编码 | 120 | 120 |
· Code Review | · 代码复审 | 30 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 70 | 90 |
Reporting | 报告 | 10 | 10 |
· Test Report | · 测试报告 | 10 | 20 |
· Size Measurement | · 计算工作量 | 20 | 25 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 10 |
合计 | 3690 | 4110 |
3.解题思路
数独的主体还是采用回溯法来生成数独棋盘,算法原理来自网上阅读。一开始想到用交叉变换来做,但是发现交叉变化所要做的分治会比较困难,之后网上搜索之后发现,回溯法生成的数独会比较快,也容易产生不同的解
其实找是一件痛苦与快乐并存的事情,很多时候你点进去找到的资料都是不完全的,但还是希望下一次的找到对你有用的,强烈推荐谷歌浏览器,用英文虽然麻烦但是真的比百度好一万倍。
回溯法介绍(摘自CSDN某博客):
回溯法有“通用的解题法”之称。用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时,总是先判断该节点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该节点为根的子树的系统搜索,逐层向其祖先节点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根节点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可结束。这种以深度优先的方式系统地搜索问题的解算法称为回溯法,它适用于解一些组合数较大的问题。
4.设计过程
还在设计中………………