Benvenuto su Sebastien Costa
 Create an AccountHome | Content | Downloads | Gallery | Guestbook  

Modules
 Home
 Archivio Articoli
 Argomenti
 Contatti
 Contenuti
 Downloads
 Galleria Foto
 Guestbook
 Meteo
 Profilo Utente
 Sudoku

Who's Online
In questo momento ci sono, 5 Visitatori(e) e 0 Utenti(e) nel sito.

Non ci conosciamo ancora? Registrati gratuitamente Qui

Banners


Qui i miei siti amici:
ManuChaoIt
Weblord.it PHPNuke Italiano
Mr.Webmaster

 
Algoritmo per la ricerca delle combinazioni
Un semplice algoritmo sviluppato in C

Qualche anno fa mi sono trovato nella necessità di creare un algoritmo per ricavare le possibili combinazioni di n elementi su k posizioni: questo mi serviva per sviluppare un sistema per il totogol su Excel (quindi n numeri di mia scelta su 8 posizioni).


Ho affrontato il problema sviluppando la seguente funzione ricorsiva in C:

void combina(char* data, int n, int k, char* out_str, int out_pos)
{
  int i;
	
  for (i=0; i<=(n-k); i++)
  {
    out_str[out_pos]=data[i];
    if(k > 1)
    {
      combina(&data[i+1], (n-1-i), (k-1), out_str, (out_pos+1));
    }
    else
    {
      out_str[out_pos+1]=0;
      printf(out_str);
      putchar('\\n');
    }
  }
}

Tale funzione si limita a stampare a video il risultato delle possibili combinazioni di un array di n caratteri di classe k.
Segue un esempio di chiamata:
int main(int argc, char *argv[])
{
  char car[] = {'A', 'B', 'C', 'D', 'E'};
  char comodo[6];
	
  combina(car, 5, 3, comodo, 0);
  printf ("\\nPremi un tasto\\n");
  getch();
  return 0;
}

Il risultato a video è il seguente:

ABC
ABD
ABE
ACD
ACE
ADE
BCD
BCE
BDE
CDE









Copyright © by Sebastien Costa All Right Reserved.

Pubblicato su: 2007-01-01 (507 letture)

[ Indietro ]








All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2005 by me.
You can syndicate our news using the file backend.php or ultramode.txt
PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Generazione pagina: 0.08 Secondi