zoukankan      html  css  js  c++  java
  • 软件工程实践2019第三次作业

    Github项目地址:https://github.com/kekoko/Nya/tree/master/031702248

    PSP2.1 预估耗时(分钟) 实际耗时(分钟)
    Planning  1小时  1小时
    Estimate  37小时  42小时
    Development  10小时  10小时
    Analysis  1小时  2小时
    Design Spec  0.5小时  1小时
    Design Review  0.5小时  1小时
    Coding Standard  2小时  2小时 
    Design  2小时  1小时
    Coding  8小时  10小时
    Code Review  5小时  6小时
    Test  1小时  2小时
    Reporting  2小时  2小时
    Test Repor  1小时  2小时
    Size Measurement  1小时  1小时
    Postmortem & Process Improvement Plan  2小时  1小时 
    合计  37小时  42小时

    解题思路:

    先从九宫格开始,解完九宫格,其他也就解完。

    求解数独的算法,一开始不知道从何下手,找了一些资料,发现用回溯法,就可以简单算出。

    然后再对算法进行,列和宫进行判断。

    写6个函数,一个主函数,其他分别进行输入,解析,判断,输出。

    改进

    输入输出用fstream头文件和用命令行输入参数用main函数参数,因为没有这方面知识,花了许多时间。

    再对判断函数加了其他宫的判断。

    数独3宫格                                                                               数独4宫格

                                       

     数独7宫格                                                                                                         

                            

     数独8宫格

                                                                           

    数独9宫格

    代码说明

    算法

    用来求出数独

    bool parse_s(int loop)
    {
        int i;
        int j;
        i = loop / m;
        j = loop % m;
        if (loop == m * m)
        {
            return true;
        }
        if (sudoku_s[i][j] == 0)
        {
            for (int number = 1;number <= m;number++)
            {
                sudoku_s[i][j] = number;
                if (judge_ranks(i, j, number) && judge_palace(i, j, number))//判断行,列,宫
                {
                    if (parse_s(loop))//判断通过,递归
                        return true;
                }
                sudoku_s[i][j] = 0;//不通过,重置为0,再循环
            }
        }
        else
            return parse_s(loop + 1);//不为0,进入下一层递归
        return false;

     

    按顺序输入数独,然后解析和输出。

    while (!myfile.eof())
        {
            myfile >> sudoku_s[i][j];
            count_s++;
            j++;
            if (j == m)
            {
                i++;
                j = 0;
            }
            if ((count_s == (m * m)) && (N <= n))//假如读出一个盘面,就开始解
            {
                parse_s(0);//解数读
                output_s(N);//输出
                count_s = 0;
                N++;
                i = 0;
                j = 0;
            }
    
        }

    Code Quality Analysis

     

    总结

    之前只会写点题,所以花了很多功夫在上面。

    也学到了许多新技术,诸如文件的输入输出,github的使用,命令行参数和写博客等。

  • 相关阅读:
    [微信产品经理推荐] 有车一族福音,这个小程序能够帮到你很多忙,功能很逆天!
    微信小程序开闸,关于入口、推广、场景的一些观察与思考
    微信小程序体验(2):驴妈妈景区门票即买即游
    微信小程序的机会在于重新理解群组与二维码
    如何为你的微信小程序体积瘦身?
    体验报告:微信小程序在安卓机和苹果机上的区别
    微信小程序体验(1):携程酒店机票火车票
    张小龙宣布微信小程序1月9日发布,并回答了大家最关心的8个问题
    重点必看:小程序的服务范围限制有哪些?
    一些JS常用的方法
  • 原文地址:https://www.cnblogs.com/kkoko/p/11569779.html
Copyright © 2011-2022 走看看