|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
[C#] Programma combinazioni con 80 numeri in gruppi di 5
Salve, volevo chiedervi dei suggerimenti su come fare un programma che mi generi tutte le combinazioni con i numeri da 1 a 80 in gruppi da 5.
Grazie per l'aiuto. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
|
Intanto prova a dirci quante sono.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Ho fatto un piccolo Windows Form con un bottone ed una textbox e questo codice nella pagina cs:
Codice:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; namespace Combinazioni { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int A = 1; int B = 2; int C = 3; int D = 4; int E = 5; do { if (A != B && A != C && A != D && A != E) { if (B != C && B != D && B != E) { if (C != D && C != E) { if (D != E) { textBox1.Text += A + " - " + B + " - " + C + " - " + D + " - " + E + "\n"; } } } } if (E == 80) { E = 5; D++; if (D == 80) { E = 5; D = 4; C++; } if (C == 80) { E = 5; D = 4; C = 3; B++; } if (B == 80) { E = 5; D = 4; C = 3; B = 2; A++; } } E++; } while (A != 77); } } } Il mio PC è da oramai 4 ore che elabora i dati di questo programma. E' forse andato in loop? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Quasi quante quelle del superenalotto...
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Beh dovrebbe essere 80!/5!(75!)=24040016
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Ti propongo un algoritmo ricorsivo
Codice:
funzione(array di appoggio, indice, n, k, DA){ maxIndex = indice + n - k; for i = DA to maxIndex appoggio[i] = i se indice < k-1 funzione(array, indice + 1, n, k, j + 1) n = 80 nel tuo caso k = 5 nel tuo caso DA parte da zero ed è l'indice dell'array temporaneo ho volutamente omesso molte cose ma il succo è: 1) - per ogni cella dell'array di appoggio tu puoi inserire numeri che partono da DA fino a maxIndex 2) - ad ogni iterazione chiami la funzione stessa incrementando l'indice dell'array temporaneo prendi carta e penna e prova a eseguire l'algoritmo con pochi numeri... |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Scusami ma non riesco ad interpretare bene l'algoritmo che mi proponi.
In che linguaggio è? |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Non è in nessun linguaggio...è in pseudocodice
Ammetto di averlo scritto frettolosamente ma non è difficile da capire.. prova con carta e penna a simularlo magari con numeri fino a 5 presi a gruppi di 3 o 4 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:29.