// programa Java para imprimir todas las cadenas posibles
clase PrintAllStrings {
// Método del controlador
public static void main (String [] args) {
conjunto de caracteres [] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ’f’, ‘g’, ‘h’, ‘i’,
‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v ‘,’ w ‘,
‘x’, ‘y’, ‘z’, ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9 ‘};
int n = set.length;
para (int k = 0; k <n; ++ k) {
printAllKLengthStr (set, “”, n, k);
}
}
- ¿Qué algoritmo de búsqueda usa True caller?
- ¿Cuáles son algunos de los códigos más pequeños que generan un número pseudoaleatorio?
- ¿Cuál es la técnica de clasificación eficiente para organizar los libros en una biblioteca?
- ¿Cómo se puede predecir el rango basado en el rango anterior y los datos de puntaje disponibles?
- ¿Cuáles son algunos algoritmos para el comercio de acciones automatizado?
// El método recursivo principal para imprimir todas las cadenas posibles de longitud k
static void printAllKLengthStr (conjunto de caracteres [], prefijo de cadena, int n, int k) {
// Caso base: k es 0, prefijo de impresión
si (k == 0) {
System.out.println (prefijo);
regreso;
}
// Uno por uno agrega todos los caracteres del conjunto y de forma recursiva
// llamar a k es igual a k-1
para (int i = 0; i <n; ++ i) {
// Siguiente carácter de entrada agregado
Cadena newPrefix = prefijo + set [i];
// k disminuye, porque hemos agregado un nuevo personaje
printAllKLengthStr (set, newPrefix, n, k – 1);
}
}
}
Intente ejecutar este programa desde la consola. Lo intenté, pero el programa está tomando mucho tiempo mientras imprime las palabras de cinco letras.
Luego, traté de guardar los resultados en un archivo, para mi sorpresa, el eclipse se bloqueó después de un minuto y el tamaño de archivo de salida es de 1.8GB y no pude abrirlo con ninguno de mis editores en mi máquina Windows.
Luego sentí curiosidad por encontrar la cantidad de caracteres que tendrá el archivo de salida:
No. de 1 palabras con letras = 36
No. de 2 palabras con letras * 2 = 2 * 36 * 36 = [matemática] 2 * 36 ^ 2 [/ matemática]
.
.
.
No. de 36 palabras con letras * 36 = [matemáticas] 36 * 36 ^ {36} [/ matemáticas]
Esto conducirá al siguiente resultado:
Observe el comportamiento del programa a medida que x aumenta:
Un archivo con caracteres de 1 lakh ocupa alrededor de 100 KB de espacio en disco.
Un archivo con el número de caracteres anterior consumiría aproximadamente,
3936245433353900220722290265309660 yotta bytes de espacio en disco.
La capacidad de almacenamiento de todas las computadoras juntas en el mundo no sería suficiente para guardar el resultado del programa anterior.
Nota:
1. No intente guardar los resultados en el archivo.
2. 1 yotta byte = 1024 Zetta byte = 1024 Exabyte = 1024 petabyte = 1024 terabyte