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
}?
}