Red de conocimiento informático - Computadora portátil - La programación en C selecciona m números de n números para combinar

La programación en C selecciona m números de n números para combinar

Ideas de programación:

Seleccione m números de n números para combinar (ngt; m) que se pueden resolver de forma recursiva

Empiece con n Elija un número del resto n-1 números, y luego seleccione m-1 números de los n-1 números restantes para combinar

Para n-1 números, también hay

primero Seleccione un número de n -1 números, y luego seleccione m-2 números de los n-2 números restantes para combinar

...

Para n-N números Números, también

Primero seleccione un número de n-N números y luego seleccione m-N números de los n-N números restantes para combinar

Recursivamente así

Hasta m-N==1

Cuando m-N es 1, naturalmente no es necesario seleccionar

El resultado de cada selección se coloca en una matriz y se pasa como parámetro

p>

Cuando la recursividad alcanza m-N = 1, la matriz y el valor seleccionado actualmente forman una combinación válida, que puede generarse.

Para este tipo de problema, puede probar soluciones recursivas, convirtiendo problemas grandes y complejos que se transforman en problemas más pequeños y solucionables nivel por nivel.

El código de muestra es el siguiente: void?select(

int*?data/*A filtrar No puede haber números repetidos en el número*/,

int?n,

int?m,

int?list[]/*Asume la longitud de la lista Suficiente, para m, el valor del elemento en la lista inicial es -1*/,

int?listlen)

{

int?i, j;

if(m==1 ){

para(i=0;ilt;n;i){

para(j=0;lista[j ]!=-1; j )

{

printf("d?", lista[j]);

}

printf("d\n", datos[i ]);//Emitir un resultado

}

return;

}

for(int?i=0;ilt; n-m;i)

{

lista[listlen-m]?=?datos[i];

seleccionar(datos i 1, n-i, m- 1, list, listlen); //Llamada recursiva

}?

}