• 2020软件工程作业03


    2020软件工程作业03

     
     
    软件工程
    https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
    作业要求
    https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
    作业目标
    编写程序,完成作业
    作业正文                                                      如下
    参考文献
    百度



    1、Github项目地址

     

    https://github.com/magicvie/test1/blob/master/20177715.html

    2、PSP表格

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

    三、解题思路

    题目要求

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

    2.三宫格:盘面是3*3。使1-3每个数字在每一行、每一列中都只出现一次,不考虑宫。

    3.用cmd命令行的形式读出写入文件,并传入参数。

    4、实现过程

      自己太菜基础不扎实,到网上查找资料,给胡某大佬打电话求教,搞了好久没什么进展。。。。。。

      几乎完全搞不懂怎么写,到最后都没有达到规范

    5.代码说明  

      import java.util. Scanner;

    class NinePalace[

    public

    static void main(String[]

    args)l

    // 定义N为九宫格的行列数,需要输入

    System. out printn("请输入九宫格的行列规模(只能是奇数的)");Scanner n = new Scanner(System in);

     int N;

    //判断格局是否奇数( 可判断出偶数、负数及小数)

    double d;

    while (true){

    d = n.nextDouble0;

    N = (int)d;

    if ((dN)>1.0E-4|N%2==0|N<0)

    {System.out.printIn("输入出错格局只能是正奇数。请重新输入"):}

    else break;

    1/老师的九宫格填写方法

    int[][] result = new int[N][N]; //定 义保存九宫格的数组

    int row= 0;行初始位置

    int col = N/2;列初始位置,因为列由0开始,故N/2 是中间位置for (int i=1; i<=N*N; i++){
    result [row][col] = i;

    rOW--;

    col++; ;

    if (row<0&&col>=N)(co1-- ;row+=2;] AF 7lẳšß#tÈ 5else if (row<0){ row = N-1;} //行越界

    else if (col>=N){col = 0:}//列越界

    3else if (result[row][col] != 0)(col--;row+=2;// iÆ

    //打印出九宫格

    for (int i=0; i<N;

    i++)

    for(int j=0; j<N; j++)(System.out.print(result[j][]+"t");)System.out. printlnO;
    //我个人的填格方式

    int[][] result2 = new int[N][N]://为免冲突, 重新new一个数组

    result2[N/2]N/2] = (N*N+1)/2; /先把中间值赋予中间位置

    row= 0; //定义 行及列的初始赋值位置。之前赋值的for对两个值有影响,故需

    重新定位

    col = N/2;

    for (int i=1; i<=N*N/2; i++){

    result2[row][co1] = i

    //下面这句是把跟i对应的值放到格局对应的位置上result2[N-row-1][N-col-1] = N*N+1-i;

    row--;

    col++;
    if (row<0){ row = N-1;} //行越界

    else if (colI>=N){col = 0:}//列越 界

    else if (result2[row][co1] != 0){o-row+=2:}/有冲突

    //这方法不可能出现行列两边都越界的情祝,详情需要数学论证}

    System.out.printlnO;

    //1 再次打印出九宫格,以对比验证

    for (int i=0; i<N; i++){

    for(int j=0; j<N; j++){System.out. print(result2[][j]+" "):}System.out. printlnO;

    }}

    运行结果

     

  • 相关阅读:
    vi 整行 多行 复制与粘贴
    FPGA设计—UVM验证篇 Hello world
    武汉市最大的二手车市场
    vim 使用技巧
    CentOS 7下的软件安装方法及策略
    搜索插件:ack.vim
    Vim插件管理
    【一】 sched.h
    Android USB驱动源码分析(-)
    在Python中反向遍历序列(列表、字符串、元组等)的五种方式
  • 原文地址:https://www.cnblogs.com/vie320/p/12593626.html
Copyright © 2020-2023  润新知