Bonjour,
Je cherche à écrir une procedure qui me permetrait d'effectuer une action pour chaque combinaison de "k" chiffres pour l'enssembe "min".."max" où "k" va de "min" à "max"-1.
à préciser :
-un chiffre ne doit apparaitre qu'une seule foi par combinaison.
-l'ordre des chiffre dans les combinaisons n'a pas d'importance (12=21)
Exemple :
pour l'ensemble 1..4 je veux obtenir les combinaisons :
1
2
3
4
12
13
14
23
24
34
123
124
134
234
J'ai commencé par écrir (sous Delphi6) une procedure qui me donne toutes les combinaisont à "k" chiffre pour l'enssemble "a"-"b" mais seulement pour k=3 :
C'est un début mais je voudrait que la procedure me sorte les combinaisons pour toutes les valeurs de "k".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm1.Button1Click(Sender: TObject); var min,max,a,b,c:integer; begin min:=strtoint(edit1.Text); max:=strtoint(edit2.Text); listbox1.Items.Clear; for a:=min to max do for b:=a+1 to max do for c:=b+1 to max do listbox1.Items.Add(inttostr(a*100+b*10+c));} end;
Je pense que mon salut se trouve dans la programmation récursive mais je ne metrise pas bien le sujet et j'ai pondu un truc bibon qui ne fonctionne pas :
Merci pour votre aide...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function TForm1.combi(min,max:integer):string; var i:integer; begin for i:=min to max do begin result:=inttostr(i)+combi(i+1,max); listbox1.Items.Add(result); end; end;
Partager