• 2020软件工程作业03


    软件工程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
    本作业要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
    这个作业的目标 个人编写程序
    作业正文 本篇
    其他参考文献 https://www.bilibili.com/video/BV1rJ41177wD?t=169

    1、Github项目地址

    https://github.com/Michael-ZHANGG/20177619

    2、PSP表格

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

    三、解题思路

    看到数独问题,我的第一反应就是万能破解大法——暴力破解。是的,就是递归加回溯,简称dfs算法。

    具体思考回路:在不违反数独规则的前提下,我们从左到右,从上到下,总是选择可以填入最小的数。如果碰到无解,我们返回上一步,寻找下一个最小的数字填入,如果仍然无解,我们继续重复这个步骤。除非这个数独无解,不然总是能找到答案滴!

    四、设计实现过程

    1、函数模块

    • 输出文件模块
    • 合法性判断模块
    • 递归回溯算法模块
    • 主函数模块

    2、具体函数设计

    • output函数:

      将得到的二位数组写入output.txt

    • check函数:

      对当前坐标进行行列是否重复判断

      对当前坐标进行区块是否重复判断

    • dfs函数

      对数组全局遍历

      调用check函数进行合法性判断

      当前无解,回溯上一步

      边界值判断

      调用output函数输出结果

    • main主函数

      读取input.txt文件

      调用dfs函数,从数组第一个数进行判断

      判断是否有结果

    3、流程图

    五、改进程序性能

    1、静态检查

    最先开始在dev c++上写的 上图

    一气呵成 信心满满 然而......


    行行行 慢慢改 于是:

    但是中间还是有一个问题:link4075警告?!
    我的头文件 #include<stdio.h> 有问题?! 后续再说吧

    2、性能分析

    还是先上图


    老实讲算法和效验函数还可以改进,也就是dfs()和check()。嗯...看来需要学新的解决算,b站大学等我。

    3、单元测试

    后续补充

    6、代码说明及结构#

    1、output函数

    2、check函数

    3、dfs函数


    4、main函数

    结果展示

    直接实现的九宫格......然后一次只能解一个......后续在整吧.......

    七、心路历程与收获

    说实话,还有一些功能并没有实现,算半阉割版吧。其中输入文件名以命令行参数传入,什么io之类的全是网上翻阅资料,但是还是存在问题。嗯......后续在改吧...
    嗯...先及格再说。

    八、自我评价

  • 相关阅读:
    KVM安装之脚本和镜像目录树准备
    KVM安装之网桥
    安装KVM虚拟机步骤
    NFS搭建配置
    为项目组搭建开发测试环境介绍
    VMWare虚拟机copy后网卡不是eth0解决办法
    安装Oracle 10g和SQLServer2008(仅作学习使用VirtualBox虚拟机来安装节省电脑资源)
    常用的SQL语句
    在web项目中集成Spring
    IOC容器装配Bean(注解方式)
  • 原文地址:https://www.cnblogs.com/zxssg/p/12590338.html
Copyright © 2020-2023  润新知