dfs- gama completa (número UPC-Scheme)
Interpretación gama completa
realización de las ideas
del Chestnut
tema real (esquema de UPC-número)
?! ¿Qué es todo ?! dispuestas
de disposición es posicionar todas sus posibles subconjuntos vienen recogidos aquí.
un conjunto de este tipo es {1,2,3} de modo que su gama completa tendrá la siguiente situación:
{1,2,3}, {1,3,2}, {2,1,3}, {2 , 3,1}, {3,1,2}, {3,2,1}
Conocer el significado de toda la disposición, entonces tenemos que resolver lo que si un lenguaje de alto nivel.
Realización de las ideasÍndice de contenidos
La idea es retener uno, todo el resto de todo el arreglo, entonces éste se cambia, cada reserva es diferente.
para las castañasÍndice de contenidos
El código para lograr la plena armonización con la
cadena de entrada, entonces todo su contenido completo de la matriz.
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
int num;
set<string>dict;
char save[50];
void dfs(int t) {
if(t==num) {
cout<<save<<endl;
return ;
}
for(int i=t; i<num; i++) {
char temp;
temp=save[t];
save[t]=save[i];
save[i]=temp;
dfs(t+1);
temp=save[t];
save[t]=save[i];
save[i]=temp;
}
}
int main() {
gets(save);
num=strlen(save);
dfs(0);
return 0;
}
Aquí vienen unatema realÍndice de contenidos
título Descripción
Después de que el cronómetro del juego, los estudiantes CNR, obviamente, los llevaron K temporizadores diseñados para combatir el juego de números: obviamente, CNR y los respectivos temporizadores K hacen cola para ver quién explica cuales el número máximo. Por ejemplo: Hay temporizadores K = 3, las cifras anteriores eran 31,3,331, dos personas que comparten esquema son:
explicar claramente los números son 333131, 331313 figuras lucha CNR, ganar claramente evidente.
Obviamente dominó el algoritmo central deletrear el valor máximo, determinado a tener la investigación CNR. Pero ella debe primeras estadísticas del programa cuántos esquemas diferentes de los temporizadores K puede significar?
Tenga en cuenta que el temporizador ya está más avanzada, puede mostrar cuatro dígitos.
entrada
Primera línea: un número entero K. (1 ≤ K ≤ 4)
la segunda línea entero K: representa el número de K en el temporizador. (Todos los números son números enteros mayores que 0 y menor que 10000)
exportación
Un número entero que representa el número hace que el número de diferentes esquemas.
Ejemplo de entrada
3
31 3 331
Ejemplo de salida
5
Insinuación
(331.331) (331.331) se escriben igual número de programas y 331331, contando solamente una clase.
La idea es arsenal completo, y luego usar el conjunto función de agregado, a la clase cuántos estadísticas cabo.
Tiempo para AC
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
int num;
set<string>dict;
char save[50][50];
void dfs(int t,char (*save)[50]) {
if(t==num) {
char store[2500];
memset(store,0,sizeof(store));
for(int i=0; i<num; i++)
strcat(store,save[i]);
dict.insert(store);
return ;
}
for(int i=t; i<num; i++) {
char temp[50];
strcpy(temp,save[t]);
strcpy(save[t],save[i]);
strcpy(save[i],temp);
dfs(t+1,save);
strcpy(temp,save[t]);
strcpy(save[t],save[i]);
strcpy(save[i],temp);
}
}
int main() {
cin>>num;
for(int i=0; i<num; i++)
cin>>save[i];
dfs(0,save);
cout<<dict.size()<<endl;
return 0;
}
DFS arsenal completo de este párrafo. Si la corrección de errores también la esperanza, si no hay suficiente disfrutar comentario.
Hace poco supe el color de fuente, y ah algo adictivo. Ja ja ja ~ ~ eructo
meses rueda By-
Agradecimientos Mr.Zhang