Red de conocimientos turísticos - Información de alquiler - Acerca del problema de la selección de números en la programación en lenguaje C GA. Seleccione cualquier número del 1 al 8 para que su suma sea igual a 20. En cada ciclo, use uno para cada número.

Acerca del problema de la selección de números en la programación en lenguaje C GA. Seleccione cualquier número del 1 al 8 para que su suma sea igual a 20. En cada ciclo, use uno para cada número.

No entiendo por qué tienes que seleccionar el número al azar. Si es un número seleccionado al azar, ¿cómo se determina la condición final?

No seleccionaré aleatoriamente los números a continuación para ver si funciona.

La idea es:

Definir una matriz para almacenar los números seleccionados.

En la función de búsqueda de implementación principal, suma representa la suma de los números seleccionados, índice representa el subíndice de la ubicación de almacenamiento del siguiente número en la matriz y grande representa seleccionar un número entre números no mayores que grande, comenzando desde el más grande. El número opcional comienza desde arriba.

Si la suma de big y sum es menor que el objetivo, escriba big en la matriz e ingrese a la siguiente ronda de búsqueda.

Nuevos parámetros de búsqueda índice+1, big-1. .

Si desea esperar, escriba grande en la matriz e imprima el número en la matriz hasta el subíndice del índice, es decir, el número que suma el objetivo.

Si es mayor no hagas nada.

Finalmente, la búsqueda se llama a sí misma y busca entre los números opcionales del 1 grande. Debido a que se llama de forma recursiva, big-2, big-3...

se llamará una vez hasta la base.

La condición final es que el rango de búsqueda sea menor que el número mínimo opcional, es decir, cuando no hay ningún número para elegir.

#include

#definir base 1

#definir top 8

#definir TARGET 20

int arr[8-1+2]; //para almacenar los números seleccionados

void show(int index){

int i;

for(i = 0; i <= índice; ++i)

printf("%d\t", arr[i]);

printf("\n ");

}

void search(int sum, int index, int big){ //grande es el número más grande que se puede elegir para seguir sumando

//si es grande < base, la suma no puede aumentar, sale

if(big < base)

regresa;

if(suma + big < OBJETIVO){

arr[index] = grande;

buscar(suma + grande, índice + 1, grande - 1);

}si no ( suma + grande == OBJETIVO){

arr[index] = grande;

show(index);

}

buscar (suma, índice, grande - 1);

}

int main(){

búsqueda(0, 0, arriba);

devuelve 0;

}