Problema combinazioni

di il
7 risposte

Problema combinazioni

Salve a tutti, sono nuovo in questo forum, vorrei sapere se qualcuno di voi potesse aiutarmi a risolvere ( per me un rompicapo) questo pezzo di codice. Il mio problema sarebbe trovare tutte le combinazioni senza ripetizione dei numeri all' interno dell' array c[] tenendo conto che tutte le combinazioni trovate comincino con i primi due elementi. Grazie a tutti per l' aiuto

#include <stdio.h>
main()
{
	FILE *fa=fopen("prova.txt", "w");
	int i=0, j=0, x=0, y=0, z=0, a=0, b=0, e=0, f=0, g=0;
	int c[]={3,5,7,11,13,17,19,23,29,31,37,41,47,53,59,61};
	int d[8];
	for(i=0;i<=1;i++)
	for(j=2;j<=3;j++)
	for(x=4;x<=5;x++)
	for(y=6;y<=7;y++)
	for(z=8;z<=9;z++)
	for(a=10;a<=11;a++)
	for(b=12;b<=13;b++)
	for(e=14;e<=15;e++)
	{
		d[0]=c[i];
		d[1]=c[j];
		d[2]=c[x];
		d[3]=c[y];
		d[4]=c[z];
		d[5]=c[a];
		d[6]=c[b];
		d[7]=c[e];
		for(f=0;f<=7;f++) fprintf(fa, "%d ", d[f]);fprintf(fa, "\n");g++;
	}
	fprintf(fa, "\n%d", g);
}

7 Risposte

  • Re: Problema combinazioni

    Non capisco … nelle varie for, ad esempio la

    for(j=2;j<=3;j++)

    usi solo l'elemento di indice 2 e il 3 (quindi i valori 7 e 11), ma non tutti gli altri … e così per le altre for.

    Ma poi a che serve tutto questo?

  • Re: Problema combinazioni

    Ciao, considera le seguenti sequenze che rappresentano le combinazioni senza ripetizione di n=5 elementi (costituiti dai numeri che vanno da 0 a n-1) presi k=3 alla volta:

    0 1 2
    0 1 3
    0 1 4
    0 2 3
    0 2 4
    0 3 4
    1 2 3
    1 2 4
    1 3 4
    2 3 4

    Se riesci ad ottenere sequenze di questo tipo per n e k generici, allora il tuo problema può ritenersi praticamente risolto, in quanto la singola sequenza conterrà gli indici degli elementi dell'array da considerare per la singola combinazione.

    Volendo essere più precisi quello che devi implementare è una funzione di questo tipo:

    bool combinazione_successiva(unsigned int *u, unsigned int n, unsigned int k);

    che aggiorni l'array u alla sequenza successiva e ritorni true fin quando in u non sarà presente la sequenza finale, nel qual caso ovviamente la funzione ritornerà false.
    Per esempio:

    INPUT: 
    	u = 0, 3, 4
    	n = 5
    	k = 3
    	
    OUTPUT: true (con u = 1, 2, 3)
    INPUT: 
    	u = 2, 3, 4
    	n = 5
    	k = 3
    	
    OUTPUT: false (con u = 2, 3, 4)
  • Re: Problema combinazioni

    A quanto correttamente risposto, posso aggiungere questo link da cui prendere spunti …

    https://www.aconnect.de/friends/editions/computer/combinatoricode_e.html#k-combinations_without_repetition_in_lexicographic_order

  • Re: Problema combinazioni

    Grazie a tutti per le vostre tempestive risposte, ho visto il sito suggeritomi da Oregon e ti ringrazio, ma il il tipo di algoritmo che sto' cercando purtroppo non c'e', provero' a giocarci un altro po'. Grazie nuovamente a tutti

  • Re: Problema combinazioni

    16/02/2024 - giansamu ha scritto:


    purtroppo non c'e'

    Come no? Certo che c'è … basta leggere bene …

  • Re: Problema combinazioni

    Che peccato che il moderatore ha eliminato l' ultima risposta…

  • Re: Problema combinazioni

    Non penso proprio sia stato il moderatore ma l'utente migliorabile stesso che, ogni tanto, cancella i propri post.

    In ogni caso, se vuoi dire qualcosa, fai pure, ci lasci con questa curiosità…

Devi accedere o registrarti per scrivere nel forum
7 risposte