[Andorid开发][算法分析与设计]数独游戏(舞蹈链)

前言:大一时的兴趣产物,现在补发上来。。


 

1、  需求分析与类设计

 

游戏界面主要由MainActivity和GameActivity实现,其中Sudoku是一个基于GameActivity的自定义View,Sudoku类实现了把数独问题转换为精确覆盖问题、再利用DLX类求解、根据解和定义的难度和维度随机出题、最后将题目绘制出来。

2、  算法设计与分析

 

利用舞蹈链处理数独问题,首先需要将数独问题转换为精确覆盖的问题,考虑到数独问题的四个约束条件:

   1、  每个格子只能填一个数字

   2、  每行每个数字只能填一遍

   3、  每列每个数字只能填一遍

   4、每宫每个数字只能填一遍

 将矩阵的列定义为约束条件,得出转换关系:

 然后用表示约束条件的bool型矩阵构造舞蹈链,然后回溯求解,最后用这个转换关系逆向转换就可以得出数独的解了!

3、功能展示

  主界面(四宫、九宫、十六宫可选,分别又有简单、中等、困难三个模式)

  

 

  随机性题库(图为九宫简单模式):

  

 

   十六宫困难模式:

 

   

 

   没有填完无法提交:

 

  

 

   答对了:

  

 

 

   答错了: 

  

 

posted @ 2020-03-30 11:22  champanesupernova  阅读(225)  评论(0编辑  收藏  举报