zoukankan      html  css  js  c++  java
  • 软件工程实践2019第三次作业

    Github项目地址:https://github.com/yxyolo/031702108


    PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
    Planning 计划 0.5 0.5
    Estimate 估计这个任务需要多少时间 24 16
    Development 开发 18 13
    Analysis 需求分析 (包括学习新技术) 0.5 0.5
    Design Spec 生成设计文档 0 0
    Design Review 设计复审 0 0
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 1 0.5
    Design 具体设计 2 2
    Coding 具体编码 12 9
    Code Review 代码复审 3 2
    Test 测试(自我测试,修改代码,提交修改) 3 2
    Reporting 报告 1 1
    Test Repor 测试报告 0 0
    Size Measurement 计算工作量 0.5 0.5
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 1 0.5
    合计 24 16

    解题思路

    一开始拿到题目的觉得非常难,无从入手,自己没有玩过数独,也不知道数独有什么技巧,就去网上查找解数独的技巧,结果很多都是观察法,好像与算法没什么关系,感到更绝望了....后来突然就想到去搜索用算法解数独,看到了回溯法,好像一下子看到了一点光明,突然有了思路,发现其实也没想象的那么难,就用傻瓜式的一遍遍试就好了,出错了就回去试另一条路(应该还有更好的方法,有待继续发现!)
    

    主要代码

    主要采用回溯的思想,简单说就是不撞南墙不回头,这条路走不通就试另一条 
    

    求解函数
    从第一格遍历至最后一格,如果该位置不为零,则求解下一个位置;如果该位置为零,从1-阶数,一个个试可以填哪个数字。如果再下一格没有数字可填,则回到上一格,继续尝试其他的数字。(大概思路,不详细说最后一格的差别了)

    判断函数
    判断这一格填这个数字是否可行,遍历这一格所在的行、列、宫,若没有重复数字,则可行。这里我把每一种阶数分开讨论,后续有待改进。

    主函数
    主函数中包含了对文件的读取部分

    输出函数
    读取和输出我觉得是个难点,之前从没有尝试过这样的。后面是请教了同学才写出来的,还有些用法不大理解。

    代码改进

    增加了对无解的判断,count初始值为0,若有输出,count++ ; 若最后count==0,判定为无解。

    测试结果

    命令行

    3-9阶的测试结果如下
    




    性能分析

    emmmm参数看不太懂....
    


    心路历程与收获

    写出来的时候感觉非常的有成就感。很多东西大概不像想象中的那么难,只是我们习惯望而生畏罢了,所以要多尝试呀。
    最大的收获大概就是回溯法和输入输出函数的用法了,虽然还不是掌握的很好。之后更深入地学习吧!
  • 相关阅读:
    浅析Java源码之LinkedList
    浅析Java源码之ArrayList
    Vue源码终笔-VNode更新与diff算法初探
    Vue源码后记-更多options参数(2)
    Vue源码后记-更多options参数(1)
    Vue源码后记-其余内置指令(3)
    Vue源码后记-其余内置指令(2)
    Vue源码后记-其余内置指令(1)
    Vue源码后记-vFor列表渲染(3)
    Linux/CentOS 7 timezone 修改
  • 原文地址:https://www.cnblogs.com/yxyolo/p/11587802.html
Copyright © 2011-2022 走看看