zoukankan      html  css  js  c++  java
  • 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.cnblogs.com/wufang/p/12594291.html]
    其他参考文献 [https://blog.csdn.net/Lnho2015/article/details/78632158][https://blog.csdn.net/qq_23044403/article/details/64920032?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task]

    GitHub项目地址:

    我的github项目链接:https://github.com/ShowFs/20177585/tree/master

    需求

    实现一个命令行程序,不妨称之为Sudoku。

    百度百科简介:

    数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。

    具体任务:

    现在我们想一步一步来,完成从三宫格到九宫格的进阶;完成三宫格和其他博客任务,就算过了初级考核,其他的算升级。具体各阶规则如下:

    三宫格:盘面是33。使1-3每个数字在每一行、每一列中都只出现一次,不考虑宫;
    四宫格:盘面是2
    2四个宫,每一宫又分为22四个小格。使1-4每个数字在每一行、每一列和每一宫中都只出现一次;
    五宫格:盘面是5
    5。使1-5每个数字在每一行、每一列中都只出现一次,不考虑宫;
    六宫格:盘面是23六个宫,每一宫又分为32六个小格。使1-6每个数字在每一行、每一列和每一宫中都只出现一次;
    七宫格:盘面是77。使1-7每个数字在每一行、每一列中都只出现一次,不考虑宫;
    八宫格:盘面是4
    2八个宫,每一宫又分为24八个小格。使1-8每个数字在每一行、每一列和每一宫中都只出现一次;
    九宫格:盘面是3
    3九个宫,每一宫又分为3*3九个小格。使1-9每个数字在每一行、每一列和每一宫中都只出现一次;

    PSP表格

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

    解题思路

    对于算法我并不敏感,没有办法自己根据题目条件了解到底需要什么算法,只能百度寻找类似的题目去看,一下是找到的部分解题思路:
    dfs题,从第一个空格开始填数,只填能填的数(这是一个需要判断的过程,需要边走边判断),如果当前空格填不了数字了,就退回到前一个空格能填的下一个数(回溯),直到最后一个空填上数字,就结束了。
    还有很多其他的算法·,我也看不懂就算了
    下面是部分代码:
    dfs部分
    public void dfs(int m,int n){
    for(int i = 1;i<=9;i++){
    panduan[i] = false;
    }
    if(m10){
    System.out.println("有解");
    for(int i=1;i<=9;i++){
    for(int j=1;j<=9;j++){
    System.out.print(map[i][j]);
    }
    System.out.println();
    }
    }
    else{
    judge(m, n);
    for(int i = 1;i<=9;i++){//核心步骤
    if(panduan[i]
    false){
    if(map[m][n]!=0){
    if(n9){
    dfs(m+1, 1);
    }else{
    dfs(m, n+1);
    }
    }else{
    map[m][n] = i;
    if(n
    9){
    dfs(m+1,1);
    }else{
    dfs(m,n+1);
    }
    }
    }
    }
    map[m][n] = 0;
    return;
    }
    判断部分
    public void judge(int x,int y){//用于找出当前点能填的数
    int fromX = (x-1)/33+1;
    int toX = (x-1)/3
    3+3;
    int fromY = (y-1)/33+1;
    int toY = (y-1)/3
    3+3;
    for(int i = fromX;i<=toX;i++){
    for(int j = fromY;j<=toY;j++){
    panduan[map[i][j]] = true;
    }
    }
    for(int i=1;i<=9;i++){
    panduan[map[i][y]] = true;
    panduan[map[x][i]] = true;
    }
    }

    性能测试

    说句实话,性能测试工具在装,也出现了很多问题,没办法电脑配置太低。。。。暂时也还不会使用,后面能装上的话再来编辑算了。

    总结

    这次作业花了很长的时间,但是对我来说收效甚微,我这低配的电脑装不上VS,百度了很多办法也无法解决问题,本来也不怎么会用java,无奈之下只能选择IDEA,由于以前完全没有使用过IDEA,所以算是从头开始,研究软件的使用就花了很长的时间,我并不适合这个专业,对于理科完全学不懂,因此也完全没有兴趣进行这个专业的学习,当初这个专业是随便选的,也不了解这个专业,只能尽力的完成作业,在网上查了很多乱七八糟的资料,算法也学不懂,本来就是一个理科渣,还好死不死的进了这全是数学的专业,只能勉强理解一些简单的原理。对于这次作业,在规定的时间里我并没有能完整完成,只能后期再尽量去补好了。

    作业自评

    这次作业虽然不想但的确水平很低很敷衍。

  • 相关阅读:
    Spark官方调优文档翻译(转载)
    Spark性能优化指南——高级篇(转载)
    Spark性能优化指南——基础篇(转载)
    Apache Spark 内存管理详解(转载)
    Apache Spark 2.2.0新特性介绍(转载)
    SparkSQL – 从0到1认识Catalyst(转载)
    深入研究Spark SQL的Catalyst优化器(原创翻译)
    GC调优在Spark应用中的实践(转载)
    Project Tungsten:让Spark将硬件性能压榨到极限(转载)
    Spark SQL在100TB上的自适应执行实践(转载)
  • 原文地址:https://www.cnblogs.com/wufang/p/12594291.html
Copyright © 2011-2022 走看看