• 2020软件工程作业03


    GITHUB地址:https://github.com/qq578503760/20177629

    解题思路

    题目刚开始的时候,感觉应该就是一个数独问题,然后第一反应就是一个一个填,填完看冲不冲突。
    于是之后就去网上找找算法推荐,大部分都是回溯。
    我看到网上有用TXT读写这道题的,把题放入二维数组再放入ArrayList中。
    把题分开取出再去解,从1到9全部试一遍,每行每列每个九宫格测试,没问题就下一个继续试,1到9都不行就回溯到上一个再试。

    画个流程图

    代码部分

    参数处理

    参数是:m(几阶的数独)n(几次测试)i(输入intput)o(输出output)
    简便处理取第1 3 5 7个元素

    输入

    根据网上所用TXT来读写取数独题,放入ArrayList中。

    解题

    每一个数独题都要通过solve解出来后存放至ArrayList最后再写入到文件里。

    -solve-
    把所有的数独题都用solve方法,每一个填的空都要用test方法检查,如果没有问题的话就检查下一个,如果出现重复就回溯。


    -test-
    行测试列测试,不出现冲突(阶数为4 6 8 9时进行宫格测试)



    输出

    输出到文件里

    JProfiler的性能分析

    可以发现test方法和所显示的langStringreplaceAll调用较为频繁,可以考虑优化。
    PS:虽然是邓畅伟推荐的分析软件,但是还是不太会用,还是百度怎么用了才点出来的。

    测试结果

    因为测试了很多阶数的数独题,所以不一一展示。挑出做了宫格测试的和没做宫格测试各一个展示(八阶和五阶的)。

    总结:

    其实对于这一次作业来说,花费了很多的时间去找资料,比如像看到用文件流,然后就自己去百度了很多关于文件流的用法啊之类的资料。
    然后在算法上,我百度了许多关于数独解题的算法,最后没办法还去麻烦了两波邓畅伟大佬,一波算法一波JProfiler,那做的感觉发际线
    都高了几厘米。光是能完成都已经很伤脑了,还要去改进在下真的做不到啊。(不说了,我还要去完成别的课的作业和笔记,这几天搞这个,
    其他课的笔记和作业全都没动。)

  • 相关阅读:
    gc buffer busy/gcs log flush sync与log file sync
    给Oracle年轻的初学者的几点建议
    Android 编程下帧动画在 Activity 启动时自动运行的几种方式
    Android 编程下 Touch 事件的分发和消费机制
    Java 编程下 static 关键字
    Java 编程下 final 关键字
    Android 编程下模拟 HOME 键效果
    Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?
    Extjs4 大型项目目录结构重构
    [转]SQLServer 2008 允许远程连接的配置方法
  • 原文地址:https://www.cnblogs.com/liubingliang/p/12540055.html
Copyright © 2020-2023  润新知