Red de conocimientos sobre prescripción popular - Cuidado de la salud en otoño - ¿Qué es una enumeración? En el razonamiento inductivo, si se examinan una por una todas las situaciones posibles de un determinado tipo de evento y se llega a una conclusión general, entonces esta conclusión es confiable. Este método inductivo se llama enumeración. 1. Características: enumere todas las respuestas posibles a la pregunta una por una y luego juzgue si la respuesta es apropiada según las condiciones. Si es adecuado, guárdelo; si no, tírelo. Por ejemplo, encuentre los números primos entre 1 y 100. Es necesario juzgar todos los números enteros entre 1 y 100. El algoritmo de enumeración tiene las siguientes características: 1. El resultado obtenido debe ser correcto; 2. Puede realizar mucho trabajo inútil, perder un tiempo precioso y ser ineficiente. 3. Generalmente implica encontrar valores extremos (como el más grande, el más pequeño, el más pesado). 2. La estructura general del algoritmo de enumeración: bucle while. Primero considere un problema: convierta todos los números enteros entre 1 y 100 en números binarios. Algoritmo 1: Para I: = 1 a 100, dobegin convierte I a binario y el resto es el resultado de la conversión a binario. hasta que el divisor sea 0. Fin; Algoritmo 2: Suma binaria, esta vez necesitas la ayuda de matrices. Programa p; var a: entero de matriz [1..100]; {usado para guardar el resultado binario convertido} i, j, k: entero; comenzar fillchar(a, sizeof(a), 0 {100 matriz Todo); los elementos se inicializan a 0 } para I:= 1 a 100 comienzan k:= 100; y a[k]=1, hacen dec(k); {encontrar la posición donde el primer bit alto es 0} a[k] := 1; {buscar y asignar inmediatamente a 1} para j:= k+1 a 100 DOA[j]:= 0; {todos los bits bajos posteriores se asignan a 0} k:= 1; 0 do Inc (k); {Encuentra la posición que no es 0 desde el bit más significativo} write('(', I ')2 = '); Para j:=k a 100, escribe (a[j]) ; {Resultado después de la conversión} fin de writeln; el método de enumeración, a menudo llamado método exhaustivo, se refiere a enumerar todos los elementos de un conjunto posible y utilizar las restricciones dadas en la pregunta para determinar cuáles son inútiles y cuáles son útiles. La persona que puede hacer verdadera la proposición es la solución al problema. La idea básica de utilizar algoritmos de enumeración para resolver problemas es: (1) Determinar los objetos de enumeración, el rango de enumeración y las condiciones de juicio (2) Enumerar las posibles soluciones una por una para verificar si son la solución al problema; A continuación, discutiremos cómo resolver problemas mediante la enumeración desde tres aspectos: optimización del algoritmo de enumeración, selección de objetos de enumeración y determinación de condiciones de juicio. Ejemplo 1: Cien dólares para comprar cien pollos Problema: Una persona tiene cien dólares y planea comprar cien pollos. Si vas al mercado, un pollo grande cuesta tres yuanes, un pollo cuesta tres yuanes y un pollo que no es ni demasiado grande ni demasiado pequeño cuesta dos yuanes. Ahora, escriba un programa que le ayude a planificar cómo comprar para poder comprar 100 pollos por sólo 100 yuanes. Análisis de algoritmos: este problema es obviamente de enumeración. Usamos el número de tres tipos de pollos como objeto de enumeración (establecido en x, y, z y, z respectivamente), y usamos el número total de tres tipos de pollos (x+y+z) y la cantidad total gastada para comprar. pollos (x*3+ y*2+z) es la condición de juicio y se enumera el número de varios tipos de pollos. El siguiente es el programa var x, y, z: entero para resolver este problema comenzar para x:= 0 a 100 hacer para y:= 0 a 100 hacer para z:= 0 a 100 hacer {enumerar todas las soluciones posibles} si (x+y+z = 100)y(x * 3+y * 2+). {Verificar posibles soluciones y generar soluciones que cumplan con los requisitos de la pregunta} final. Todavía hay margen para optimizar las condiciones anteriores. La suma de los tres tipos de gallinas es fija. Siempre que enumeremos dos tipos de pollos (x, y), podemos obtener el tercer tipo de pollo según la restricción (z=100-x-y), reduciendo así el alcance de la enumeración.

¿Qué es una enumeración? En el razonamiento inductivo, si se examinan una por una todas las situaciones posibles de un determinado tipo de evento y se llega a una conclusión general, entonces esta conclusión es confiable. Este método inductivo se llama enumeración. 1. Características: enumere todas las respuestas posibles a la pregunta una por una y luego juzgue si la respuesta es apropiada según las condiciones. Si es adecuado, guárdelo; si no, tírelo. Por ejemplo, encuentre los números primos entre 1 y 100. Es necesario juzgar todos los números enteros entre 1 y 100. El algoritmo de enumeración tiene las siguientes características: 1. El resultado obtenido debe ser correcto; 2. Puede realizar mucho trabajo inútil, perder un tiempo precioso y ser ineficiente. 3. Generalmente implica encontrar valores extremos (como el más grande, el más pequeño, el más pesado). 2. La estructura general del algoritmo de enumeración: bucle while. Primero considere un problema: convierta todos los números enteros entre 1 y 100 en números binarios. Algoritmo 1: Para I: = 1 a 100, dobegin convierte I a binario y el resto es el resultado de la conversión a binario. hasta que el divisor sea 0. Fin; Algoritmo 2: Suma binaria, esta vez necesitas la ayuda de matrices. Programa p; var a: entero de matriz [1..100]; {usado para guardar el resultado binario convertido} i, j, k: entero; comenzar fillchar(a, sizeof(a), 0 {100 matriz Todo); los elementos se inicializan a 0 } para I:= 1 a 100 comienzan k:= 100; y a[k]=1, hacen dec(k); {encontrar la posición donde el primer bit alto es 0} a[k] := 1; {buscar y asignar inmediatamente a 1} para j:= k+1 a 100 DOA[j]:= 0; {todos los bits bajos posteriores se asignan a 0} k:= 1; 0 do Inc (k); {Encuentra la posición que no es 0 desde el bit más significativo} write('(', I ')2 = '); Para j:=k a 100, escribe (a[j]) ; {Resultado después de la conversión} fin de writeln; el método de enumeración, a menudo llamado método exhaustivo, se refiere a enumerar todos los elementos de un conjunto posible y utilizar las restricciones dadas en la pregunta para determinar cuáles son inútiles y cuáles son útiles. La persona que puede hacer verdadera la proposición es la solución al problema. La idea básica de utilizar algoritmos de enumeración para resolver problemas es: (1) Determinar los objetos de enumeración, el rango de enumeración y las condiciones de juicio (2) Enumerar las posibles soluciones una por una para verificar si son la solución al problema; A continuación, discutiremos cómo resolver problemas mediante la enumeración desde tres aspectos: optimización del algoritmo de enumeración, selección de objetos de enumeración y determinación de condiciones de juicio. Ejemplo 1: Cien dólares para comprar cien pollos Problema: Una persona tiene cien dólares y planea comprar cien pollos. Si vas al mercado, un pollo grande cuesta tres yuanes, un pollo cuesta tres yuanes y un pollo que no es ni demasiado grande ni demasiado pequeño cuesta dos yuanes. Ahora, escriba un programa que le ayude a planificar cómo comprar para poder comprar 100 pollos por sólo 100 yuanes. Análisis de algoritmos: este problema es obviamente de enumeración. Usamos el número de tres tipos de pollos como objeto de enumeración (establecido en x, y, z y, z respectivamente), y usamos el número total de tres tipos de pollos (x+y+z) y la cantidad total gastada para comprar. pollos (x*3+ y*2+z) es la condición de juicio y se enumera el número de varios tipos de pollos. El siguiente es el programa var x, y, z: entero para resolver este problema comenzar para x:= 0 a 100 hacer para y:= 0 a 100 hacer para z:= 0 a 100 hacer {enumerar todas las soluciones posibles} si (x+y+z = 100)y(x * 3+y * 2+). {Verificar posibles soluciones y generar soluciones que cumplan con los requisitos de la pregunta} final. Todavía hay margen para optimizar las condiciones anteriores. La suma de los tres tipos de gallinas es fija. Siempre que enumeremos dos tipos de pollos (x, y), podemos obtener el tercer tipo de pollo según la restricción (z=100-x-y), reduciendo así el alcance de la enumeración.

Mire el siguiente programa: var x, y comience para x: = 0 a 100 haga para y: = 0 a 100-x comience z: = 100-x-y if (x * 3+y * 2+z; div 3 = 100)y(z mod 3 = 0)luego writeln('x= ',x,' y= ',y,' z= ',z); El programa no optimizado se ha repetido 1013 veces y la complejidad del tiempo es O (n3); el programa optimizado solo se repite (102 * 101/2) veces y la complejidad del tiempo es O (n2); Como puede verse en la comparación anterior, fortalecer las restricciones y reducir el alcance de la enumeración son las principales consideraciones para la optimización del programa. En los algoritmos de enumeración, la elección del objeto de enumeración también es muy importante, lo que afecta directamente la complejidad temporal del algoritmo. Elegir el objeto de enumeración adecuado puede conducir a una mayor eficiencia. Ejemplo a continuación: Ejemplo 2. Divide los números 1 y 2... 9***9 en tres grupos para formar tres números de tres dígitos, y haz que estos tres números formen una proporción de 1:2:3, e intenta encontrar todos aquellos que cumplan las condiciones. Tres dígitos. Por ejemplo, tres números de tres cifras son 192.384.500. Los datos para este problema no son grandes y pueden enumerarse. Si consideramos cada número como un objeto de enumeración sin pensar, enumérelo poco a poco: para a:= 1 a 9do para b:= 1 a 9do...... ............ ................................................. ... .................................El programa es el siguiente: var t, x: entero s, ST: cadena ; c:char; Comenzar para x: = 123 a 321do {enumerar todas las soluciones posibles} comenzar t:= 0; str(x, ST); {convertir el entero X en una cadena y almacenarlo en st} str(x* 2); , s); ST:= ST+s; str(x*3, s); ST:= ST+s for c:='1' to '9' enumera 9 caracteres y determina si están todos en st. } Si pos (c, ST) <& gt; 0 entonces Inc(t) else break {si no está en st, salga del ciclo} Si t = 9 entonces escriba (x, '', x * 2, '', x * 3); Fin; cuando se utiliza el método de enumeración para resolver problemas, también es importante determinar las condiciones de juicio. Si las restricciones son incorrectas o incompletas, no se agotarán los resultados correctos. Veamos el siguiente ejemplo. El problema de resolver la ecuación cúbica en el Ejemplo 3 (noip2001tg) se describe como una ecuación cúbica en la forma ax3+bx2+cx+d=0. Se dan los coeficientes de cada término de esta ecuación (A, B, C y D son todos números reales. Se acepta que esta ecuación tiene tres raíces reales diferentes (el rango de las raíces está entre -100 y 100). La diferencia de raíz absoluta Valor>:=1. Se requiere generar estas tres raíces reales en la misma línea en orden ascendente (con espacios entre raíces), con una precisión de 2 decimales. Consejo: Recuerda la ecuación f(x)=0, si hay dos números x1 y x2, y X1