排列树
void Backtrack(int t) {
if (t > n)
Output(x);
else {
for (int i = t;i <= n;i++) {
Swap(x[t], x[i]);
if (Constraint(t) && Bound(t))
Backtrack(t + 1);
Swap(x[t], x[i]);
}
}
}
子集树
void Backtrack(int t) {
if (t > n)
Output(x);
else {
for (int i = 1;i <= 1;i++) {
x[i] = i;
if (Constraint(t) && Bound(t))
Backtrack(t + 1);
}
}
}