Dancing Links讲解和练习整理
来源:互联网 发布:linux ssh登录时间 编辑:程序博客网 时间:2024/05/08 06:07
有关dancing links的资源
>>> 详细讲解链接地址
- 注明:该讲解来自以下作者
作者:万仓一黍
出处:http://grenet.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
>>> wikipedia上的讲解
>>> [kuangbin带你飞]练习地址(vjudge)
>>> kuangbin的代码模板(摘自kuangbin.net)
struct DLX{ int n,m,size; int U[maxnode],D[maxnode],R[maxnode],L[maxnode],Row[maxnode],Col[maxnode]; int H[MaxN],S[MaxM]; int ansd,ans[MaxN]; void init(int _n,int _m) { n = _n; m = _m; for(int i = 0;i <= m;i++) { S[i] = 0; U[i] = D[i] = i; L[i] = i-1; R[i] = i+1; } R[m] = 0; L[0] = m; size = m; for(int i = 1;i <= n;i++)H[i] = -1; } void Link(int r,int c) { ++S[Col[++size]=c]; Row[size] = r; D[size] = D[c]; U[D[c]] = size; U[size] = c; D[c] = size; if(H[r] < 0)H[r] = L[size] = R[size] = size; else { R[size] = R[H[r]]; L[R[H[r]]] = size; L[size] = H[r]; R[H[r]] = size; } } void remove(int c) { L[R[c]] = L[c]; R[L[c]] = R[c]; for(int i = D[c];i != c;i = D[i]) for(int j = R[i];j != i;j = R[j]) { U[D[j]] = U[j]; D[U[j]] = D[j]; --S[Col[j]]; } } void resume(int c) { for(int i = U[c];i != c;i = U[i]) for(int j = L[i];j != i;j = L[j]) ++S[Col[U[D[j]]=D[U[j]]=j]]; L[R[c]] = R[L[c]] = c; } void Dance(int d) { if(cnt > 1)return; if(R[0] == 0) { for(int i = 0;i < d;i++)g[(ans[i]-1)/9] = (ans[i]-1)%9 + '1'; cnt++; return; } int c = R[0]; for(int i = R[0];i != 0;i = R[i]) if(S[i] < S[c]) c = i; remove(c); for(int i = D[c];i != c;i = D[i]) { ans[d] = Row[i]; for(int j = R[i];j != i;j = R[j])remove(Col[j]); Dance(d+1); if(cnt > 1)return; for(int j = L[i];j != i;j = L[j])resume(Col[j]); } resume(c); }};
0 0
- Dancing Links讲解和练习整理
- dancing links讲解
- Dancing links ? Dancing links !
- Dancing Links
- Dancing Links
- Dancing Links
- dancing links
- Dancing links
- Dancing links
- Dancing links
- 简单易懂的Dancing links讲解(1)
- 简单易懂的Dancing links讲解(2)
- 简单易懂的Dancing links讲解(3)
- 简单易懂的Dancing links讲解(4)
- 简单易懂的Dancing links讲解(1)
- 简单易懂的Dancing links讲解(2)
- 简单易懂的Dancing links讲解(1)
- 简单易懂的Dancing links讲解(2)
- 颜色对照表
- C++ 写leetcode遇到的一些问题总结Implement strStr()
- 对内存的思考
- hdu 1166 敌兵布阵 (zkw线段树)
- 【数字图像处理】四.MFC对话框绘制灰度直方图
- Dancing Links讲解和练习整理
- OpenCV Mat数据类型及位数总结
- C#创建Windows Service(Windows 服务)基础教程
- unable to start the monitor on 4454 ,an other instance is problaly using the same port
- 通过当前IP获取当前网卡的MAC地址
- 网络编程send()和recv()详解
- centos shell命令行只显示-bash-4.1#不显示用户和路径解决方法
- opencv中Mat与IplImage,CVMat类型之间转换
- 10.2 NSOperation/NSOperationQueue:提供了一些在GCD中不容易实现的特性,如:限制最大并发数量,操作之间的依赖关系.