近日闲来无事,通宵写写代码,啃了下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()
}

相关文章:

  • 2022-01-08
  • 2021-12-21
  • 2021-10-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-20
猜你喜欢
  • 2021-07-19
  • 2021-08-06
  • 2021-11-16
  • 2021-10-03
  • 2021-11-25
  • 2022-02-08
  • 2021-11-15
相关资源
相似解决方案