软件工程基础——个人项目纪实

目录

个人项目纪实说明

本文主要记录了“软件工程个人项目——数独”的开发过程。

2018年12月6日(1小时)

下载并安装了git,登陆了GitHub账号,并创建了一个新的仓库 MySudoku

2018年12月12日(1.5小时)

制定项目计划,完成需求分析,并查阅相关资料,确定实现需求所需要的算法。

2018年12月13日(2小时)

学习通过 visual studio 2017 利用GitHub进行代码管理,重新建立了工程。

2018年12月14日(1小时)

完成了主函数的构建,可以对在命令行输入的命令进入对应的函数。

2018年12月16日(4小时)

完成了数度生成的需求。第一版的版本效率非常低,生成100W个数独终局需要2min多的时间。在网上找了一个博客,跑了以下代码发现,只用了不到4秒的时间就完成了。因此,通过优化不同部分的代码已达到更高的效率。
首先,发现自己写的(char*)转int对时间有一定的影响。在改成调用atoi函数后,时间比原来短了一些,但效果依然不理想。

2018年12月18日(10小时)

通过与大佬的沟通与交流,发现了耗时如此之久的原因,主要是使用了C++中的文件流来实现文件的写入。后来换成了C里的文件操作,时间降到了10s左右。
并学习了一些优化的方法。比如,写入文件时一次性写入(我原来是一行一行写入的)会降低时间的代价;移动数组的组合也会浪费时间,因为知道组合的原因,可以直接列出来是,用的时候直接通过下标找;其次,我考虑到函数调用次数多的话,时间的代价可能会增加,所以在设计通过平移排列数生成数独终局的函数的时候,我将本来只能生成一个终局的函数改为了一次最多生成144个终局的函数。
经过两天的修改、调试,数独生成器总算是告一段落了,实属不易。调试过程中,由于一些小问题,不知为什么,函数并没有按照我设想的调用执行,后来静态审查了一遍代码,才发现了问题。

2018年12月19日(2小时)

使用python实现了一下生成数独题目的功能,以便后期解数独用。
发现atoi函数对于非法输入的处理不正确,又改回了原来的做法。atoi函数顺序处理字符串中的字符,当遇见不能转换为int的则终止,如123a456,返回值即为123,而非0或者其他处理。

2018年12月20日(2小时)

思考使用什么方法进行数独的求解,初步构建了解数独时的数据结构,并初步完成了解数独的框架,完成了数独题目的读入。

2018年12月25日(8小时)

完成了解数独的代码,并初步做了优化。
初始完成时的第一版本,解决一百万个数独谜题需要2分钟左右。把输入由fscanf函数改为fgets函数后,时间在80s左右,时间缩短了近一倍。

2018年12月26日(5小时)

改进优化求解数独的程序,尝试使用不同的方法测试效率的高低,以找到较为适合的方式。

2018年12月27日(3小时)

修改代码格式,编写博客,修整GitHub的代码管理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值