zoukankan      html  css  js  c++  java
  • 软工个人作业 数独

     1.)项目地址:

    使用语言:c++

    2.)PSP

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 20 30
    ·Estimate ·估计这个任务需要多长时间 20 40
    Development 开发    
    ·Analysis ·需求分析(包括学习新技术) 120 240
    ·Design   Spec ·生成设计文档 420 540
    ·Design   Review ·设计复审(和同事审核设计文档) / /
    ·Coding   Standard ·代码规范(为目前的开发制定合适的规范) 120 240
    ·Design ·具体设计 180 240
    ·Coding ·具体编码 1800 2400
    ·Code   Review ·代码复审 300 60
    ·Test ·测试(自我测试,修改代码,提交修改) 360 1200
    Reporting 报告    
    ·Test   Report ·测试报告 60 60
    ·Size   Measurement ·计算工作量 30 60
    ·Postmortem   & Process Improvement Plan ·事后总结,并提出过程改进计划 120 100
                                                                                                
     
    合计 3550 5210

    3.)解题思路

    看到题目的第一想法的就是用回溯法即直接暴力解决,担心时间可能会超时,就去网上找相应的博客,看到好多都是直接用暴力解决的,因为自己代码能力特别差的原因所以有想法但代码写起来仍然费了好大劲,于是又重新上网查找关于代码方面的,也受到了很大启发 ,但实现的函数方面大部分都是借鉴同学的,就是先让第一行全排列然后针对每一个全排列都开始从第二行入手开始一个一个尝试输入判断条件就是行不同列不同和所在宫格不同,那么这就要求在给出任一个坐标的时候都能找到它所在格的第一个位置坐标,所以把这个函数写出来就好了。

    4.)设计实现

    采用一个n*9*9的三维数组前一位记录是第几个数独,后面则表示棋盘了,然后根据所写的全排列数组先生成第一行的数字,然后从第二行开始依次填1入-9随机数,每次都需先判断是否满足数独规则,因为第一个数字是不能变的跟自己的学号有关,所以每次排列完第一行后都需要把跟自己学号好相关的那个数换到第一个数,但这样能实现的数独很有限,所以还要将除了第一行第一列的其他行列进行随机交换这样所有的全排列进行完成所能实现的数独就超过了题目的要求。

    5.)程序性能分析及改进

     

     

     

     

     

     

    6.)代码说明

    利用回溯法进行数字的填入和求解(函数是询问的同学)

  • 相关阅读:
    jdbctemplate的batchUpdate使用方法
    js利用html5的canvas实现图像等比例压缩
    js前台通过EXIF.js获取图片中携带的经纬度信息
    Linux expr相关
    expect用于scp传输文件
    linux 自动登录ftp 获取文件
    作业8:单元测试练习(个人练习)
    作业7-用户体验设计案例分析
    作业6:团队作业——学生成绩录入系统设计与实现
    作业5:需求分析
  • 原文地址:https://www.cnblogs.com/lgq1/p/8837442.html
Copyright © 2011-2022 走看看