void restablecer(Pagina* actual, int k) { /* actual tiene la dirección del nodo antecedente de actual -> ramas[k] que tiene menos claves que el mínimo */ if (k > 0) /* Tiene "hermano" izquierdo */ if (actual->ramas[k-1]->cuenta > m/2) moverDrcha(actual, k); else combina(actual, k); else /* Sólo tiene "hermano" derecho */ if (actual->ramas[1]->cuenta > m/2) moverIzqda(actual, 1); else combina(actual, 1); }
void geracombi(int n, int ini, int k) { int i; if(n == 0){ combina(); return; } for(i=ini; i <= x - n; i++){ usar[k] = i; geracombi(n-1, i+1, k+1); } }
int main() { int n, r; printf("\tPrograma que Calcula las Permutaciones posibles de un conjunto.\n\n"); printf("Introduce el número de elementos: "); scanf("%d",&n); printf("Introduce el número de objetos a probar: "); scanf("%d",&r); printf("\nEl número de combinaciones (%d)C(%d) = %d.\n\n",n,r,combina(n,r)); printf("Fin del Programa.\n"); return 0; }