个人项目实战(数独)

个人项目实战

项目地址:https://github.com/kddll/soduku


作业地址

https://edu.cnblogs.com/campus/fzu/SoftwareEngineering2015/homework/859

Documents

  • 项目需求

    利用程序随机构造出N个已解答的数独棋盘 。
    编程语言:C++
    编程IDE:推荐使用Visual Studio 2017
    源代码管理平台:Github

  • 解题思路:
    刚开始做这道题的时候,完全不知道该怎么下手,百度上大都使用回溯法来做,因为没什么思路,所以,我就用回溯法和随机排列的方法来解决,但是因为算法比较不好,所以目前只写出了一个解。
    思路是:建立一个二维数组,确定第一个数组的值,然后第一行利用随机排列,从第二行开始搜索符合条件的结果。搜索过程:写一个判断函数,参数为数组下标。1.i,j处是否可以存数据(下标大于9就不符合题目要求了)2.判断同一行,同一列,一个小的九宫格是否有出现相同的数字,如果有,则不能填入,没有就可以填入。

主要代码
1239086-20171227002020932-603662407.png
1239086-20171227002028885-246530905.png
1239086-20171227002038635-2094492330.png

测试
1239086-20171227002107948-2027832123.png
1239086-20171227002135698-737460632.png
1239086-20171227002440182-617606876.png

效能分析
设定n为200
1239086-20171227010011307-656980483.png
主要时间还是花费在查找正确解上!!
1239086-20171227015507651-1199661425.png
1239086-20171227015509948-404575225.png
1239086-20171227015515245-572495562.png
总结:
这次作业主要是在代码上话的时间比较多,因为自己代码能力比较弱,所以在百度上查找了许多代码,进行借鉴,数据结构学的不好,有一些代码还不怎么看的懂。关于这次实践,我的代码只能找出一个准确结果,日后有解决办法,会继续改进的!

转载于:https://www.cnblogs.com/shellin/p/8120839.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值