1 Востаннє редагувалося Mister (26.05.2016 14:59:48)

Тема: Як утворити комбінації?

Маю масив int[,]mas=new int[2,n];
Як утворити  всі комбінації елементів 1 рядка з 2?
Комбінація містить по 4 елементи([0,i],[0,j],[1,k],[1,l])

2 Востаннє редагувалося Mister (26.05.2016 16:21:35)

Re: Як утворити комбінації?

Приклад (що в масиві mas, і що має бути на виході) :
mas[0,0]=123;
mas[0,1]=31234;
mas[0,2]=1233;
....
mas[1,0]=457;
mas[1,1]=665;
mas[1,2]=4388;
...
знайти всі комбінації
(mas[0,i],mas[1,i],mas[0,k],mas[1,l]),де i!=k;i!=l;
Вивід:(123, 457, 31234, 665), (123, 457,1233,4388)
...

Подякували: leofun01, Engineer2

3

Re: Як утворити комбінації?

Думаю цю тему було б доцільніше перенести в розділ "Алгоритми та структури даних, технології"

Подякували: leofun011

4

Re: Як утворити комбінації?

Тільки все заплутали. В першому тексті у вас (i,j,k,l), у другому - (i,k,l) і якісь дивні умови.
Просто 4 вкладених цикли не дадуть, що вам треба?

Подякували: leofun011

5

Re: Як утворити комбінації?

koala написав:

Тільки все заплутали. В першому тексті у вас (i,j,k,l), у другому - (i,k,l) і якісь дивні умови.
Просто 4 вкладених цикли не дадуть, що вам треба?

Тільки довгу роботу

6

Re: Як утворити комбінації?

Якось так:

public static int[,] Combine(int[,] mas) {
    if(mas.GetLength(0) < 2) return null;
    int len = mas.GetLength(1), index = 0;
    int[,] result = new int[4, len * len * len * len];
    for(int i = 0; i < len; ++i)
        for(int j = 0; j < len; ++j)
            for(int k = 0; k < len; ++k)
                for(int l = 0; l < len; ++l) {
                    result[0, index] = mas[0, i];
                    result[1, index] = mas[0, j];
                    result[2, index] = mas[1, k];
                    result[3, index] = mas[1, l];
                    ++index;
                }
    return result;
}

Завантажте, скомпілюйте.

Post's attachments

Combine4.zip 7.88 kb, 287 downloads since 2016-05-26 

7

Re: Як утворити комбінації?

Або так:

public static int[,] Combine(int[,] mas) {
    if(mas.GetLength(0) < 2) return null;
    int len = mas.GetLength(1), index = 0;
    int[,] result = new int[4, len * --len * len * ++len / 2];
    for(int i = 0; i < len; ++i)
        for(int j = 0; j < len; ++j)
            for(int k = 0; k < len; ++k)
                for(int l = 0; l < len; ++l) {
                    if(i == k || i == l || j == k || j == l)
                        continue;
                    result[0, index] = mas[0, i];
                    result[1, index] = mas[0, j];
                    result[2, index] = mas[1, k];
                    result[3, index] = mas[1, l];
                    ++index;
                }
    return result;
}
Post's attachments

Combine4_2.zip 7.92 kb, 299 downloads since 2016-05-26 

8

Re: Як утворити комбінації?

Mister написав:
koala написав:

Тільки все заплутали. В першому тексті у вас (i,j,k,l), у другому - (i,k,l) і якісь дивні умови.
Просто 4 вкладених цикли не дадуть, що вам треба?

Тільки довгу роботу

Ну тобто пояснювати, як саме вам треба, ви не хочете. Повірте - нам воно треба ще менше, ніж вам.

Подякували: Engineer, leofun012