Этот вопрос является более конкретным случаем этого:
Реализация алгоритма дерева , который был задан другим пользователем.
У меня есть три разных списка, каждыйиз них с предварительно определенным числом элементов (64) из перечисления
enum Values
{
G0,G1,G2,G3,G4,G5,G6,G7,G8,G9,G10
}
Списки:
List<Values> list1;
List<Values> list2;
List<Values> list3;
Значения на них могут быть сгенерированы случайным образом:
//for each list
Random rand = new Random();
for(int i=1; i<=64; i++) listN.Add((Values)rand.Next(1,12));
Также у меня есть структура под названием:
struct ValuesCombination
{
List<Values> Combination { get; set; }
}
, которая используется для хранения всех соответствующих комбинаций (генерируемых с помощью символов из list1
, list2
, list3
)
У меня также есть список, который содержит все возможные комбинации:
List<ValuesCombination> combinations;
Некоторые примеры комбинаций:
combinations.Add(new ValuesCombination(){ Values.G0, Values.G0, Values.G0}); //#comb1
combinations.Add(new ValuesCombination(){ Values.G0, Values.G0});//#comb2
combinations.Add(new ValuesCombination(){ Values.G1, Values.G1});//#comb3
combinations.Add(new ValuesCombination(){ Values.G2, Values.G2});//#comb4
Комбинации имеют длину 2 или 3.
#comb1
удовлетворен, получив G0
от list1
, G0
от list2
и G0
от list3
, но #comb2
удовлетворен, получив G0
от list1
, G0
с list2
и с любым Value
, за исключением G0
с list3
Что мне нужно?
На основании списка нужных мне комбинацийчтобы подсчитать количество вхождений каждой из моих комбинаций в этом списке, получая по одному элементу из каждого списка.
Мне не нужна формула для каждой комбинации, она нужна мне далеко, так как я выбираюкарандашом и сделайте это.
list1[1] list2[1] list3[1] = G1, G1, G1 -> satisfies = true! G1G1G1 combination++
list1[1] list2[1] list3[2] = G1, G1, G2 -> satisfies = true! G1G1 combination++
list1[1] list2[1] list3[3] = G1, G1, G0 -> satisfies = true! G1G1 combination++
...
list1[n] list2[n] list3[n] = GX, GX, Gx -> satisfies??
Мне нужно, чтобы это работало как можно быстрее, потому что с этим я хочу создать приложение, которое дает мне вероятность каждой комбинации, в то время как я изменяю Значения каждого списка.
Я использую Visual Studio 2010 с c # 4.0.