在 dlx 中,恢复链的操作对方向有要求吗?
比如这个:
for (int i = e[c].d; i != c; i = e[i].d) {
ans[dep] = e[i].x;
for (int j = e[i].r; j != i; j = e[j].r) {
remove(e[j].y);
}
if (dance(dep + 1)) {
return 1;
}
for (int j = e[i].l; j != i; j = e[j].l) {
resume(e[j].y);
}
}
这是 AC 的
然而改成:
for (int i = e[c].d; i != c; i = e[i].d) {
ans[dep] = e[i].x;
for (int j = e[i].r; j != i; j = e[j].r) {
remove(e[j].y);
}
if (dance(dep + 1)) {
return 1;
}
for (int j = e[i].r; j != i; j = e[j].r) {
resume(e[j].y);
}
}
样例爆栈
求解释