Тема: Як утворити комбінації?
Маю масив int[,]mas=new int[2,n];
Як утворити всі комбінації елементів 1 рядка з 2?
Комбінація містить по 4 елементи([0,i],[0,j],[1,k],[1,l])
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C#, .NET → Як утворити комбінації?
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Маю масив int[,]mas=new int[2,n];
Як утворити всі комбінації елементів 1 рядка з 2?
Комбінація містить по 4 елементи([0,i],[0,j],[1,k],[1,l])
Думаю цю тему було б доцільніше перенести в розділ "Алгоритми та структури даних, технології"
Тільки все заплутали. В першому тексті у вас (i,j,k,l), у другому - (i,k,l) і якісь дивні умови.
Просто 4 вкладених цикли не дадуть, що вам треба?
Тільки все заплутали. В першому тексті у вас (i,j,k,l), у другому - (i,k,l) і якісь дивні умови.
Просто 4 вкладених цикли не дадуть, що вам треба?
Тільки довгу роботу
Якось так:
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;
}
Завантажте, скомпілюйте.
Або так:
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;
}
koala написав:Тільки все заплутали. В першому тексті у вас (i,j,k,l), у другому - (i,k,l) і якісь дивні умови.
Просто 4 вкладених цикли не дадуть, що вам треба?Тільки довгу роботу
Ну тобто пояснювати, як саме вам треба, ви не хочете. Повірте - нам воно треба ще менше, ніж вам.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися