33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
|
|
1 | |
.NET 4.x Получить массив комбинаций, где элементы массива могут принимать несколько значений25.11.2018, 22:25. Показов 2751. Ответов 12
Метки нет Все метки)
(
Помогите получить список комбинаций. Вот например двумерный массив:
[(2,4),0,0], [0,0,(7,2)], [0,0,0] Значения в дужках это значения которые может принимать элемент массива. Массив может бить любой размерности от 3 до 9, но обязательно квадратный. Но желательно 9 на 9. Результатом должен быть например List<int[,]> из массивов: 2 0 0 0 0 7 0 0 0 2 0 0 0 0 2 0 0 0 4 0 0 0 0 7 0 0 0 4 0 0 0 0 2 0 0 0 (Вместо 0 могут быть любые значения от 1 до 9) Знаю как сделать обычные перестановки в одномерном массиве, а тут без понятия. Буду благодарен за помощь. Добавлено через 2 часа 52 минуты Решил попробовать решить алгоритм на листике бумаги. Что то вышло но нужно перенести в алгоритм на c#. Вот что вышло: По сути двумерный массив не нужен. На вход я получаю List<List<int>> если по предыдущему примеру смотреть, то [(2,4),0,0,0,0,(7,2),0,0] Количество выходных массивов можно узнать перемноживши все количества вложеных List<int>, тоесть 2*1*1*1*1*2*1*1 = 4. Пробую рисовать все комбинации 1) 2 0 0 0 0 7 0 0 0 2) 2 0 0 0 0 2 0 0 0 3) 4 0 0 0 0 7 0 0 0 4) 4 0 0 0 0 2 0 0 0 Наче сошлось После этого можно переводить в двумерные и делать что нужно Помогите плс
0
|
|
25.11.2018, 22:25 | |
Ответы с готовыми решениями:
12
Дан целочисленный массив из 30 элементов.Элементы массива могут принимать произвольные целые значения.Опишите на русском
Дан целочисленный массив из 30 элементов. Элементы могут принимать значения от 160 до 200 |
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
|
||||||
25.11.2018, 22:56 [ТС] | 3 | |||||
Смотрите:
На вход я получаю List<List<int>> У него внутри внутри: [(2,4),0,0,0,0,(7,2),0,0] Нужно получить из полученных данных эти: 1) 2 0 0 0 0 7 0 0 0 2) 2 0 0 0 0 2 0 0 0 3) 4 0 0 0 0 7 0 0 0 4) 4 0 0 0 0 2 0 0 0 Добавлено через 3 минуты Элд Хасп, То есть перестановки перестановок, вот только меняются местами не элементы массива а возможные позиции элементов в массиве + я расписал как я на листочке решил это. Можете уточнить что вам не понятно, чтобы я смог вам дать более развернутый ответ? Добавлено через 1 минуту
0
|
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
|
|
25.11.2018, 23:23 [ТС] | 5 |
Элд Хасп, именно)
0
|
Модератор
![]() |
|
25.11.2018, 23:37 | 6 |
Где-то у меня валялся для символов - недавно делал. Надо переделать под числа.
Добавлено через 19 секунд Перебрать все возможные комбинации символов и в верхнем, и в нижнем регистрах
0
|
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
|
|
25.11.2018, 23:45 [ТС] | 7 |
Элд Хасп, Простите но тут перестановки просто символов, а у меня есть символы которые можно переставлять а есть те которые нельзя переставлять. Тут немножко сложнее.
Добавлено через 1 минуту Элд Хасп, + запрещено использовать Linq((
0
|
Модератор
![]() |
||||||
26.11.2018, 00:26 | 8 | |||||
Там похоже. Там тоже только в определённой позиции символы имеют два варианта.
У Вас же тоже можно только в указанных позициях менять варианты значений. Там где варианты из одного значения там, только один выход. Посмотрю: может сегодня, но уже поздно, может завтра. Добавлено через 15 минут Вот по быстрому сделал. Но не проверял. Проверьте сами и отпишите результат. Завтра добью, если что.
0
|
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
|
|
26.11.2018, 00:31 [ТС] | 9 |
Элд Хасп, Извините, но не верно(( Ладно я уже придумал другой вариант решения. Если интерестно то я делаю судоку)
0
|
Модератор
![]() |
|||||||||||
26.11.2018, 01:00 | 10 | ||||||||||
![]() Решение
Что-то подумал и понял что ошибка. Надо так
Тоже когда-то делал... Добавлено через 17 минут Сам проверил - нашёл ошибку. В строке 25 перепутал переменные. Надо так
теперь всё работает.
1
|
904 / 440 / 225
Регистрация: 02.06.2016
Сообщений: 703
|
||||||
26.11.2018, 01:13 | 11 | |||||
до кучи вариант сразу с двумерным массивом (тут кортежи, но их легко убрать несколькими push'ами)
Кликните здесь для просмотра всего текста
1
|
33 / 8 / 6
Регистрация: 28.09.2016
Сообщений: 200
|
||||||
26.11.2018, 01:34 [ТС] | 12 | |||||
Спасибо работают 2 варианта))
Сделал судоку решает самый сложный судоку за 3-4 секунды. Работает как часи. Сначала работает по получению возможной позиции а если не справляется то идет решение по сегментам. Вот вопщем) Думаю препод поставит автомат)) Обещал просто)
0
|
Модератор
![]() |
|
26.11.2018, 03:23 | 13 |
Удачной сдачи!
Теперь следующий шаг - сделайте теперь это как положено в ООП.....классы: судоку, строка, колонка, блок, ячейка и т.д. Все связи между ними. Потом WPF представление к нему, ViewModel - опыт получите хороший.
1
|
26.11.2018, 03:23 | |
26.11.2018, 03:23 | |
Помогаю со студенческими работами здесь
13
Дана целочисленная матрица размером M x N, элементы которой могут принимать значения от 0 до 100. Различные ст Дан массив A(NxM). Получить массив B(N), где Bi – наименьшее из значений элементов на промежутке Составить алгоритм (любая форма представления) и написать программу: В заданном целочисленном массиве размером 30 элементов элементы могут принимать з дано два массива по 10 значений . получить третий массив 10 с суммой соответствующих значений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |