Il s'agit d'une fonction que j'ai écrite il y a quelque temps pour générer tous les sous-ensembles possibles d'un tableau donné. Il est générique, il prend en charge les entiers, doubles, chaînes, etc.
originale C#
public static List<T[]> CreateSubsets<T>(T[] originalArray)
{
List<T[]> subsets = new List<T[]>();
for (int i = 0; i < originalArray.Length; i++)
{
int subsetCount = subsets.Count;
subsets.Add(new T[] { originalArray[i] });
for (int j = 0; j < subsetCount; j++)
{
T[] newSubset = new T[subsets[j].Length + 1];
subsets[j].CopyTo(newSubset, 0);
newSubset[newSubset.Length - 1] = originalArray[i];
subsets.Add(newSubset);
}
}
return subsets;
}
Et la version que je viens converti à VB.
Function CreateSubsets(Of T)(ByVal originalArray() As T) As List(Of T())
Dim subsets As New List(Of T())
For i As Integer = 0 To originalArray.Length - 1
Dim subsetCount As Integer = subsets.Count
subsets.Add(New T() {originalArray(i)})
For j As Integer = 0 To subsetCount - 1
Dim newSubset(subsets(j).Length) As T
subsets(j).CopyTo(newSubset, 0)
newSubset(newSubset.Length - 1) = originalArray(i)
subsets.Add(newSubset)
Next
Next
Return subsets
End Function
Il peut être consommé de cette manière
Dim array() As Integer = {1, 2, 3, 4, 5}
Dim subsets As List(Of Integer()) = CreateSubsets(array)
For Each subset As Integer() In subsets
Dim sum As Integer = subset.Sum()
Next
ce que vous avez essayé jusqu'à présent? – medopal
ressemble à un autre devoir – Regent
c'est une petite partie de mon papier final, j'ai besoin de cela pour former la table de probabilité de capacité, et je serais reconnaissant de l'aide – Elma