近日闲来无事,通宵写写代码,啃了下Knuth大师的论文,实在惊讶于Dancing Links的优美,于是不免心血来潮,用面向对象的方法写了近400行,结果发现很多安全隐患,遂改了下用面向过程的方式,在HUST上搞了那道1017,还不错232ms,把主要模版代码发下,希望大家指正。

Dancing Links#include <iostream>
Dancing Links
using namespace std;
Dancing Links
Dancing Links
const int MAXN=1010;
Dancing Links
const int MAXLEN=MAXN*100+MAXN;
Dancing Links
int L[MAXLEN];
Dancing Links
int R[MAXLEN];
Dancing Links
int D[MAXLEN];
Dancing Links
int U[MAXLEN];
Dancing Links
int nRow[MAXLEN];
Dancing Links
int nCol[MAXLEN];
Dancing Links
Dancing Links
int Col[MAXN]; //判定列集是否已插入
Dancing Links
int Row[MAXN]; //判定行集是否已插入
Dancing Links
int RC[MAXN][MAXN]; //判定元素是否已插入
Dancing Links
int RS[MAXN],CS[MAXN]; //行长与列长
Dancing Links
int eid; //内存标识
Dancing Links
int head;
Dancing Links
int Cn;
Dancing Links
int N,M;
Dancing Links
int ans[MAXN];
Dancing Links
int alen;
Dancing Links
Dancing Links
//DLX算法 进行精确覆盖 判定前请先判断是否各列中都有1存在
Dancing Links
//对于行列唯一的情况 可以考虑将RC数组取消以加速
Dancing Links
inline void init()
}

相关文章:

  • 2021-08-06
  • 2021-12-25
  • 2021-12-14
  • 2018-08-16
  • 2021-11-27
  • 2021-09-11
  • 2021-08-06
  • 2022-01-02
猜你喜欢
  • 2021-10-27
  • 2021-11-03
  • 2021-08-18
  • 2018-04-08
  • 2017-12-02
  • 2021-12-05
  • 2021-11-20
相关资源
相似解决方案