Me ovo puntos tema Enlace
antes de la completa gama de plantillas .... aprenden a vivir una gama completa pero eso no lexicográfico fin de pequeño a grande de la salida
int a[] = {1, 2, 3, 4, 5};
void solve(int u) {
if (u==n) {
for (int i = 0; i<n; ++i)
printf(i==n-1 ? "%d\n" : "%d ", a[i]);
return;
}
for (int i = u; i<n; ++i) {
swap(a[i], a[u]);
solve(u+1);
swap(a[i], a[u]);
}
}
//调用solve(0);
Entonces los jefes de xc hoy para ver vídeo y aprender un método, antes de que el método no se intercambia un número seleccionado y el número de cambio actual, y el siguiente método es un tiempo para seleccionar
una posición en la disposición, y luego delante de enumeración el número de relleno no utilizado dentro de esta ubicación
int n; vector<int> path;
void solve(int u, int state) {
if (u==n) {
for (int i = 0; i<n; ++i)
printf(i==n-1 ? "%d\n" : "%d ", path[i]);
return;
}
for (int i = 0; i<n; ++i) {
if (!(state >> i & 1)) {
path.push_back(i+1);
solve(u+1, state | (1<<i));
path.pop_back();
}
}
}
//调用solve(0, 0);