bonjour,

Voici un code qui genere une liste de combinaison.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class Combination
    {
        private long n = 0;
        private long k = 0;
        private long[] data = null;
 
        public Combination(long n, long k)
        {
            if (n<0 || k<0) // normalement n>k
            {
                throw new Exception("les parametre negatif on etaient saisis");
            }
 
            this.n=n;
            this.k=k;
            this.data=new long[k];
 
            for (long i=0;i<k;++i)
                this.data[i]=i;
        }
 
        public override string ToString()
        {
            StringBuilder sb=new StringBuilder();
            sb.Append("{");
 
            for(long i=0;i<this.k;++i)
                sb.AppendFormat("{",this.data[i]);
            sb.Append("}");
            return sb.ToString();
        }
 
        public Combination Successor()
        {
            if (this.data.Length == 0 || this.data[0] == this.n - this.k)
                return null;
            Combination ans = new Combination(this.n, this.k);
            long i;
            for (i = 0; i < this.k; ++i)
                ans.data[i]=this.data[i];
 
            for (i = this.k - 1; i > 0 && ans.data[i] == this.n - this.k + i; --i) ;
            ++ans.data[i];
 
            for (long j = i; j < this.k - 1; ++j)
                ans.data[j + 1] = ans.data[j] + 1;
            return ans;
 
        }
    }
ce qui me dérange c'est l'avant dernière instruction de la méthode successor que je n'arrive pas a comprendre.( ans.data[j + 1] = ans.data[j] + 1; )
Peut on faire des calcules a l’intérieur des tableau, si quelqu'un a une idée qu'il m'explique de façon détaillée svp.