• 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.baidu.com/?tn=80035161_1_dg、http://c.biancheng.net/)

    1.项目地址:

    Github项目地址:(https://github.com/Chia-hsinChou/20177688)

    仓库创建文件夹:

    2.PSP表格:

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 预估耗时(分钟)
    Planning 计划 30 45
    Estimate 估计这个任务需要多少时间 30 25
    Development 开发 4320 1920
    Analysis 需求分析(包括学习新技术) 300 360
    Desgin Spec 生成设计文档 30 10
    Design Review 设计复审 10 5
    Coding Standard 代码规范(为目前的开发制定合适的规范) 60 30
    Design 具体设计 120 60
    Coding 具体编码 360 840
    Code Review 代码复审 70 40
    Test 测试(自我测试,修改代码,提交修改) 120 200
    Reporting 报告 180 180
    Test Repor 测试报告 60 30
    Size Measurement 计算工作量 20 10
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 60 25
    合计 5770 3740

    3.解题思路描述

    ① 首先看到题目就是懵的,因为自己并不擅长玩数独,我想连数独的规则都不懂得,肯定是没有办法去实现这个程序的,于是我去百度了一下,百度百科说:数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。老师的要求是完成三宫格到九宫格的进阶(说实话此时我还没有了解数独的游戏秘诀.....还是一脸懵圈)

    ② 等我清楚规则后,觉得从三宫格往外扩展对我的编程工作而言实在是很复杂,三宫格实现之后,空间还要继续进行扩大,那样又要大幅度的改动代码,其实从九宫格推到三宫格更简单。可以将n宫格,分为需要划分和不需要划分两个部分,需要划分的通过n宫格划分的特性将里面的宫的length和width设为两个变量,就可以对宫进行操作,所以我也确定了用递归法来解这道题。

    ③ 在九宫格中需要定义一个唯一性函数用于判断某个数在某一行、列、宫上的某个位置是否是唯一合法。

    4.设计实现过程

    唯一性函数:
    首先要判定数字i在(x,y)时,i在x行,在y列(有宫时在所在的宫内)是否是唯一的。在数独中,同一行、同一列、同一宫中不能出现相同的数字,如果找到相同的就返回false。


    运用递归法:

    DSF函数要先通过x = depth / gsize, y = depth % gsize来求出(x,y),如果这个位置不为空,就调用DSF(depth+1)函数,往下继续探索;如果这个位置上没有数字就将1~gsize(gsize是宫的大小)的数字填到里面去,此时检查该数字的唯一性,如果不唯一就填下一个数字,直到有数字具有唯一性。

    主函数:

    一开始读入n宫格的大小后,通过n宫格的特性,将3-6-9宫格分为一类,4-8宫格分为一类,5-7宫格分为一类:

    5.性能分析

    6.输入输出



    7.心路历程与收获

    写到这里并没有长吁一口气的轻松感 只觉得自己真的是太菜了...岂止是菜,简直是举步维艰
    不记得在哪本书上看到说,欠谁的债都不要欠学习的债....感觉怎么追都追不上老师的步伐,老师你跑慢一点!!!!我还在地上爬呢!!!!!
    不管怎么样还是学到了很多东西,这几天真的搞到头都大了,除了看网课抄笔记就是查资料,还厚着脸皮问了一些同学,但是大家都是菜鸡互啄,都不太会弄,所以还是在网上看了很多别人的代码和理解,也借鉴了许多别人的想法,这才踩着点勉勉强强交了作业。
    老师说的这本书我都没有去看过.....(我错了!!!我马上就去看T T)
    流下了不学无术的泪....果然就像老师说的,即使辛辛苦苦弄明白了怎么做,也不明白为什么这样做,在我这里就像是套模板一样,根本不懂得原理,好好学习吧还是T T

    8自评

  • 相关阅读:
    myeclipse关掉references
    eclipse/myeclipse SVN资源库URL中文乱码问题解决办法
    获取登录用户ip
    MySQL高级 之 explain执行计划详解(转)
    代码部署工具walle(一)
    mongodb备份策略
    nginx报错整理
    记一次java程序占用cpu超高排查
    HDFS恢复误删操作的方法
    有趣的工具
  • 原文地址:https://www.cnblogs.com/Aleonx/p/12593739.html
Copyright © 2020-2023  润新知