1.题目描述:点击打开链接
2.解题思路:本题利用DLX算法解决。巧妙之处其实在于转化过程。DLX算法解决的是精确覆盖问题,那么如何把一个数独问题转化为精确覆盖问题呢?我们可以发现,精确覆盖问题其实是选择一些行,要求最终可以恰好覆盖所有列。即行代表着可用的决策,列代表着一项任务,“1”表示该行可以完成的任务。我们试图来套用这一框架。
首先,每个决策可以用一个三元组(r,c,v)表示,即...
分类:
其他好文 时间:
2015-08-12 11:33:58
阅读次数:
139
数独问题这个问题答案不唯一。如何求所有的答案?...
分类:
其他好文 时间:
2015-07-26 20:54:46
阅读次数:
202
构造数独1. 问题 构造一个9*9的方格矩阵,玩家要在每个方格中,分别填上1至9的任意一个数字,让整个棋盘每一列、每一行以及每一个3*3的小矩阵中的数字都不重复。2. 求解 用转置的方法生成数独数组,代码如下: 1 package chapter1youxizhileShuDu; 2 3...
分类:
其他好文 时间:
2015-07-01 00:56:26
阅读次数:
170
问题:Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character '.'.You may assume that there will b...
分类:
其他好文 时间:
2015-05-24 08:51:53
阅读次数:
128
题意:
数独问题,给出一些点,然后要求填满格子。每行没列1-9不能重复,每个3*3的小格子也不能重复。分析:
暴力搜索,那么主要的问题就是每次如何判断是否冲突。行和列的比较好想,row[i][j]=1表示第i行的j已经被占了,col[i][j]=1表示第i列的j已经被占了,那么每个小格子呢?
首先,每行每列都是012、345、678那么每个j/3表示它在这以行的第j/3个格子里,i/3表示在第...
分类:
其他好文 时间:
2015-05-20 09:51:28
阅读次数:
149
经典数独问题
用DFS模拟数独解法,找摒除解和余数解
数独解法:http://www.sudokufans.org.cn/forums/topic/8/
2676
#include "stdio.h"
#include "string.h"
struct node
{
int x,y;
int s[10]; // 对于每个空格,数字i是否可用
int su...
分类:
其他好文 时间:
2015-05-19 21:01:27
阅读次数:
106
题目大意:这是一个最简单的数独填充题目,题目保证只能产生一种数独,所以这里的初始9宫格较为稠密,可以直接dfs也没有问题但最近练习dancinglinks,这类数据结构解决数独无疑效率会高很多dancinglinks的数独限制条件是:1.每行有9个元素,共9行对应dlx81列2.每列有9个元素,共9...
分类:
其他好文 时间:
2015-05-19 00:37:49
阅读次数:
145
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426 思路分析:该问题为数独问题,明显解是唯一的,所有采用dfs搜索效果更好; 在搜索时,可以通过3个数组来判断对于某个特定的数是否能够满足要求,即在每一行、每一列和每一个3X3的方块中只有唯一的1~9...
分类:
其他好文 时间:
2015-05-19 00:25:47
阅读次数:
197
分析:
dlx是从数据结构角度优化01矩阵精确覆盖和重复覆盖的数据结构,它用十字链表只存贮矩阵中的非0元,而01矩阵精确覆盖dfs过程中矩阵会越来越稀疏而且每次恢复现场会浪费大量时间,dlx恰好能解决这两个问题。本题关键是将数独问题转化为01矩阵精确覆盖。数独转化为精确覆盖问题的方法还是参照Knuth的论文,如果读取到一个格子是空的,那么加9行,分别表示这个格子填1到9这9个数字,如果读取到的格...
分类:
其他好文 时间:
2015-04-27 16:57:30
阅读次数:
264
题目链接:http://poj.org/problem?id=2676数独问题。用dancing links解决。建图参考http://wenku.baidu.com/link?url=3Tk5gVYew3mSQ2f2LxDODxPg3v-yqJPUaEkuZpfkHTxfSPQuM_n8TGl2S...
分类:
其他好文 时间:
2015-04-23 23:18:15
阅读次数:
266