zoukankan      html  css  js  c++  java
  • 软件工程作业03

    软件工程作业03

    软件工程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
    作业要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10458
    作业目标 实现一个数独命令行程序
    作业正文 见下文
    参考文献 知乎 百度 CSDN

    PSP表格

    PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    pianing 计划 50 60
    Estimate 估计这个任务需要多少时间 300 600
    Development 开发 100 150
    Analysis 需求分析 (包括学习新技术) 30 30
    Design Spec 生成设计文档 40 30
    Design Review 设计复审 20 15
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 25 20
    Design 具体设计 30 40
    Coding 具体编码 50 60
    Code Review 代码复审 20 20
    Test 测试(自我测试,修改代码,提交修改) 30 35
    Reporting 报告 20 30
    Test Repor 测试报告 20 30
    Size Measurement 计算工作量 20 30
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 40 60
    calculer 合计 400 550

    Github 项目地址:https://github.com/lwb20177673/storehouse/blob/master/20177673

    求解思路

    基本求解思路是暴力枚举和深度优先搜索。但是由于求解的数独数目最高可以达到 1,000,000 个,且空白数目较多,因此需要对算法进行优化。

    优化思路是将数独中的空白按照可填数字数目从低到高的顺序进行排序,优先选择可填数字少的格子,可以减少大量递归调用函数自身时间。

    性能分析和优化

    如图:



    结果分析

    程序在 Windows 10 环境下运行时间 3.354 s,速度大幅提升。其中最耗时部分是 std::next_permutation 函数 生成排列的函数调用次数较多,耗时符合预期,性能瓶颈基本解决。

    感想

    通过这次作业,对自己专业知识一无所知,脑子一片空白。只能借助百度和求助同学的帮助,这次作业也让我认清了自己的技术水平,以后还是要多加学习与练习才能有所突破!

  • 相关阅读:
    Node.js 函数
    Node.js模块系统
    在Apache服务器上安装SSL证书
    Node.js Stream(流)--文件操作
    HTML5自带验证美化
    HTML5约束验证API
    Node.js Buffer(缓冲区)
    Python 练习:简单的购物车(二)
    Python 练习:简单的购物车
    Python 列表操作
  • 原文地址:https://www.cnblogs.com/liwenbo20177673/p/12622216.html
Copyright © 2011-2022 走看看