Подсчет количества предопределенных комбинаций на основе списка определений - PullRequest
1 голос
/ 10 мая 2011

Этот вопрос является более конкретным случаем этого:

Реализация алгоритма дерева , который был задан другим пользователем.

У меня есть три разных списка, каждыйиз них с предварительно определенным числом элементов (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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...