您好、欢迎来到现金彩票网!
当前位置:21点 > 子集覆盖 >

ACM:搜索算法专题(4)——跳舞链

发布时间:2019-07-25 10:18 来源:未知 编辑:admin

  在N行 M列的棋盘中放置一定数目的棋子,要求从其中选出若干行,使得每一列中恰好有一枚棋子。

  给定一个集合S和它的n个子集s1, s2, ... sn。要求从中选择k个子集满足:

  对于精确覆盖问题,最直观的解法就是枚举S的所有子集和所有的子集选择方案,寻找符合条件的方案。但是对于有x个元素的集合,子集数目为2^x个,因而选择的子集的策略就有2^(2^x)种,这是一个非常庞大的数字。算法执行效率非常低。

  精确覆盖问题比较好的解法是利用一种称为“跳舞链”的数据结构进行搜索。方法如下:

  首先定义数据的存储结构,对于精确覆盖问题,一定可以构造一个二维的数表,其中数表的每一行代表一个子集,而每一列则代表全集中的一个元素。对于数表中第i行第j列的元素, 如果第i个子集中包含了全集中的第j个元素,则值为1,否则,值为0。上面例子中的棋局可以用下面的矩阵来表示:0 1 0 1

  表中的每一行、每一列均为一个循环的双向链表,每一列具有列头结点,所有的列头结点也组成一个循环双链表,表头为头结点Head。

  (1) 查找头结点Head元素右边相邻的结点,如果Head的right域指向自己,则算法结束,表明找到了合法的方案。否则,继续执行步骤(2)。(2) 记Head结点的right域指向的节点为c,查找c所在列的所有节点,选择其中一个节点,记作r,将结点r所在的行加入答案中。如果节点c所在列没有节点,此时说明当前方案不可行,需要回溯到上一阶段重新选择结点。否则,执行步骤(3)。

  (3) 遍历r所在行的全部节点(不包括r),对于每一个节点s,执行步骤(4)、(5)。

  (4) 对于节点s,遍历s所在列的每一个节点t(不包括s),删除t所在行的全部节点,包括结点t本身。

  输入:第1行:1个正整数t,表示数据组数;接下来t组数据,每组的格式为:第1行:2个正整数n,m,表示输入数据的行数和列数;第2..n+1行:每行m个数,只会出现0或1。

  输出:第1..t行:第i行表示第i组数据是否存在解,若存在输出Yes,否则输出No。

  题目描述:   给定4个数字,判定这4个数字是否可以通过运算得到结果24。运算操作包括:加、减、乘、除,允许变换数字的顺序,允许使用括号改变运算顺序。  即:判定是否存在一种通过在下面的圆圈中添加运算...博文来自:I am a coder

  题目来源:        HihoCoder1312题目描述:   给出一个九宫格的拼图游戏的棋局,求完成拼图最少需要一定的步数。解答:·规则:   首先简要说明游戏规则。    游戏的棋局如下:  ...博文来自:I am a coder

  跳舞链跳舞链是著名的计算机科学家高德纳提出的一种使用深度优先搜索来解决精度覆盖问题的算法。其问题的提出是在一个棋盘上,是否可以挑出一些长边,使得每一个宽边上有且仅有一枚棋子。高德纳认为,这个问题里面宽...博文来自:aaron_1996的专栏

  题目来源:       HihoCoder1321 题目描述:  给定一个数独方阵,通过程序给出数独的解。解答:·数独:  首先给出数独规则如下:在9×9的数表中填入数字1~9,使得每一行、每一列、每...博文来自:I am a coder

  搜 索1.简单概念所谓图的遍历,也称为搜索,就是从图中某个顶点出发,沿着一些边访遍图中的所有的顶点,且使每个顶点仅被访问一次。 2.算法分类2.1回溯算法:     常常不被认为是搜索,而被分类为基础...博文来自:popcjz的博客

  双向十字交叉循环链表求解精确覆盖、重复覆盖。骨牌覆盖、N皇后问题的高效解法。...博文来自:WhereIsHeroFrom的博客

  题目链接:就是一个DLX的模板,判断能否选出几行来覆盖整个矩阵...AC代码:#include&...博文来自:Charles_Zaqdt的博客

  二分专题今天训练的是二分查找专题,刷完专题后对二分法的应用有了新的理解。在平时写题中,有些时候会遇到题目要求给出诸如给定划分方式范围内的最大值或是最短距离的最大值等,此类问题枚举虽然可以理论上解决,但...博文来自:这是一个ACM专用的瞎写给自己看的没什么技术含量的可能是假的博客

  舞蹈链算法与数独求解舞蹈链算法舞蹈链算法用于求解精确覆盖问题。精确覆盖问题可以理解为如下问题:给定一个01矩阵,寻找一个行的集合,使得集合中的列恰好满足每一列包含一个1。...博文来自:duanhy的专栏

  这一专题的题目做了不少,但似乎对贪心的感念依然有些模糊,下面简单写下我的理解。 一.概述 所谓贪心算法,就是用将一个大的问题细化成若干小问题,通过逐一解决这些小问题,最终求得问题解的方法。这种策略往往...博文来自:Mr_Ma_ACM的博客

  时间很紧了,马上就要大三了。。却还在低级算法遨游,说来真是忏愧,好好刷题了,两个寒假全浪费了看到了一个同是大二,却比自己厉害很多的同龄人,自己需要加把劲了加油!A题棋盘问题直接dfs,枚举所有情况就行...博文来自:acm败犬 个人网站/span>

  参考小Ho最近遇到一个难题,他需要破解一个棋局。棋局分成了n行,m列,每行有若干个棋子。小Ho需要从中选择若...博文来自:L.

  【题意】不解释了,就是裸的DLX模板题,先记录一下DLX的板子,看了半天总算理解了一些。【DLX学习】参考这篇博客:点击打开链接写得非常清楚,顺便赞一句,DLX真的是太神奇了。orz。【AC代码DLX...博文来自:I good vegetable a!

  一、Bash博弈1、问题模型:只有一堆n个物品,两人轮流从这堆物品中取物,最多取m个,最后取光者胜。2、解决思路:当n=m+1时,由于一次最多取m个,无论先取者拿走多少个,后取者都能一次拿走剩余的物品...博文来自:XianYangBlog

  时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Ho最近遇到一个难题,他需要破解一个棋局。棋局分成了n行,m列,每行有若干个棋子。小Ho需要从中选择若干行使得每一列有且恰好只有...博文来自:碳酸钙的01妖精的博客

  深度优先搜索的思路:搜索其实就是一种遍历,只不过这种遍历更形象成一种树形结构,从最开始的根节点出发,一直到树的尾端,在从“根”到“尾”的过程中,你就可以进行一些判断及操作。如果从“根”到其中一个“尾”...博文来自:DBC_121的博客

  二分法是程序设计中非常常用的一种算法,比赛中经常会使用到,在我参加的这些比赛里,几乎每一场比赛都会有多多少少涉及到二分法的题目。二分法不仅仅是用来比较一个数在一个数列里所处的大小位置,有时候还有很多更...博文来自:世靖的码场

  题目描述:   在国际象棋的棋盘上放置3个骑士的棋子,按照骑士的移动规则移动这3个棋子,使其到达同一个位置,求最少的移动次数。解答:  本题不难。首先说明一下国际象棋的规则,棋盘由8×8=64个黑白相...博文来自:I am a coder

  字符串专题算是搞得差不多了,来大概总结一下吧。要掌握的算法:1、KMP算法作用是两个串之间的匹配,核心思想是pre[i]表示串B的最长的前缀与以i为结尾的后缀相同,每次匹配失败时,从i跳到pre[i]...博文来自:Oxer的专栏

  一、巴什博弈(BashGame)情形:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。当n=m+1,我们假设第一个人拿走了k个,还剩下m+1-k。因为1&...博文来自:的博客

  题意:给一个数组,返回一个相同尺寸的数组;返回的数组的第i个位置的信息是,对于原数组中的第i个元素,至少向右走多少步,才能遇到一个比自己大的元素(如果之后没有比自己大的元素,或者是最后一个元素,返回-...博文来自:Hi_jiaxinwei的博客

  在准备蓝桥杯,最重要的当然是搜索啦啦,开个搜索专题专门贴题,不定时更新。hdu2181 哈密顿绕行世界问题因为数据不大,所以简单的深搜就可以了,注意从小到大排下序,防止数据随机给。#include#i...博文来自:秦楚

  请大家加入VOJ的“挑战ACM编程”组做题。网址是:。请大家加入VOJ的“挑战ACM编程(贰)”组做题。网址是:https:/...

  二分图:二分图是什么:顶点集可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集,两个子集内的顶点不相邻。(边不能连接同一个子集的点)图示:二分图染色:情况:给一个图,...

  博弈论是门非常有意思又博大精深的学科,非常实用。感兴趣的同学可以去看看什么是囚徒困境,智猪博弈,也可以去看看耶鲁大学的博弈论公开课,想必会受益匪浅。不过我想讲的还是和ACM相关的博弈。有一种很有意思的...

  问题描述:假定在一舞会上,男士排成一队,女士排成一队。跳舞开始时,依次从男队和女队的队头各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。要求:模拟上述舞伴系统,并能计算...

  1.1161-XTUOJ 现在用1*2的骨牌,去铺n*3的地板,骨牌可以竖着和横着放,但不能重叠,请问铺满地板一共有多少种不同的铺法?输入每行输入一个整数n,(1≤n≤1,000),如果n为0表示样例...

  w_y_x_y:强!第一眼看到文字排版不太好看就以为写的不好,然后发现评论里都是赞,就认真看完了,确实好!讲的清晰易懂!对于“对网络协议和网络通信有一定基础”的人来说,这篇文章看起来基本没压力!

  w_y_x_y:强!第一眼看到文字排版不太好看就以为写的不好,然后发现评论里都是赞,就认真看完了,确实好!讲的清晰易懂!对于“对网络协议和网络通信有一定基础”对人来说,这篇文章看起来基本没压力!

http://libroebook.com/zijifugai/254.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有