zoukankan      html  css  js  c++  java
  • 第二次作业

    一开始做的时候我以为只要一个个格子填入,然后按照条件去排除。于是我找了一些数独题,尝试用这个方法解题。一开始的时候并没有什么问题,因为限制条件比较少,九个数很多数可以任意填。可随着填充的深入,限制条件也越来越多,更让人头疼的是,一些之前填好的数字,因为不满足需要考虑其他情况。但是不仅仅是简单的替换,因为一个数字改变,对于所在的九宫格以及所在的行以及列,已经填入的数字都会出现限制条件的改变,这样工作变得麻烦起来。
    所以,这样填的话,一开始工作量并不是很大,而且由于一开始数字少,会出现多种不同的情况,可是随着格子数填入越来越多,你需要考虑的也越来越多,而且前面填好的格子,可能因为不满足九个小格不重复而需要返回,这样给计算机带来极大的工作量,增大了复杂度。
    虽然,如今的计算机计算能力十分强大,但是光是考虑这些可能出现的情况,然后一一列举,敲入代码,实在不符合实际
    其实,可以用分而治之的思想,也就是把81个格子先划分成9个九宫格,按一个九宫格的顺序填入,同时考虑同一行与同一列不重复,这样使得工作量少了不少。所以我就先对81个格子进行划分,再利用递归进行填数。
    代码:https://github.com/chenjin1226/SECND
    写的有些草率,实在是今天遇到状况太多,打乱计划,没有充足的时间组织语言。拖延症是个病,得治!

  • 相关阅读:
    [ 随手记 4 ]C/C++ 模板(Template)使用/重载区别
    [ 随手记 3 ] 堆区/栈区/堆栈/队列
    [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针
    柯西方程的另外一种解法
    十分强大的CC抛物线定理(数学)
    模板_BIT
    模板_SEG_TREE
    模板_SPLAY
    模板_LCA
    NOIP游(GUNCU)记
  • 原文地址:https://www.cnblogs.com/cjm1226/p/7502534.html
Copyright © 2011-2022 走看看