225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,538
|
|||||||||||
1 | |||||||||||
Реализовать алгоритм всех возможных комбинаций восьми ферзей19.05.2016, 05:11. Показов 5703. Ответов 119
Доброго времени суток! Мне стыдно задавать такой вопрос, но всё же, как реализовать алгоритм всех возможных комбинаций восьми ферзей?
Используйте исчерпывающий «лобовой» подход, т.е. попробуйте все возможные комбинации восьми ферзей на шахматной доске. Я, думаю, что как-то так: Пройтись по всем строкам и столбцам, выяснить возможно ли поставить ферзей с таких то координат, (0, 0), (0, 1), (0, 2)....(0, 7) , (1, 0) (1, 1) .... ну и так далее до (7, 7) и каждую координату обрабатывать, выясняя, если поставить первого ферзя на на эти коордитаты, то остальные семь ферзей возможно ли разместить на доске. Вот такая вот идея решения) Но решение не могу написать, функция обработки не получается почему-то... Кликните здесь для просмотра всего текста
Я уже несколько дней с этой задачей маюсь, надо всё же понять как решать подобное, не просто скопировать код, а понять как это решать, ну и подобные, соответственно. Смотрел примеры решения, но не понял код, что, куда, зачем, например
Попрошу сильно не пинать, форум насколько я понял для начинающих! Спасибо!
0
|
19.05.2016, 05:11 | |
Ответы с готовыми решениями:
119
Сортировка всех возможных комбинаций 4 из 8 Создание всех возможных комбинаций английского алфавита Перебор всех возможных комбинаций Генератор всех возможных комбинаций |
_Ivana
|
19.05.2016, 05:28
#2
|
Не по теме: Только что откинулся после длинного срока, а тут какой-то до боли знакомый кот :D
0
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,538
|
|
19.05.2016, 05:37 [ТС] | 3 |
Да, он самый.
Добавлено через 2 минуты _Ivana Ты не мог бы как-то его более подробно, точнее, более детально разъяснить, скажим так, разживать
0
|
19.05.2016, 05:41 | 4 |
Это функция, которая тестирует, можно ли поставить ферзя в заданные координаты, при условии, что на предыдущих столбцах уже стоят ферзи с сохранением инварианта "никто никого не бьет". Да, она на "растяжках" - используется внешний массив уже расставленных фигур до требуемого столбца - m.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
19.05.2016, 05:42 | 5 |
Да-да, узнаю брата Колю! Слушайте, как вы сами в своем коде что-то понимаете? Ну ладно, сразу после написания, а спустя время понимаете что-нибудь?
0
|
19.05.2016, 05:45 | 6 |
Mr.X, ну так я далеко не каждого кота пишу с целью понять его после долгой отсидки Элемент некоей намеренной обфускации (но не в ущерб краткости) также имеет место быть. О мотивах - разговор отдельный. И, как видите, я таки вспомнил и понял былого кота
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
19.05.2016, 05:49 | 7 |
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
19.05.2016, 05:57 | 9 |
Ну, я тут наверно уже все задачи перерешал, про ферзей точно где-то есть, хотел сейчас найти, и обнаружил, что расширенный поиск не работает! Вообще! Никакие мои сообщения не находит! Кто-нибудь знает с чем это связано?
0
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,538
|
||||||
19.05.2016, 06:02 [ТС] | 11 | |||||
Что за растяжки
То что она проверяет я понял, не понял зачем параметр K, он вызывается рекурсивно для чего, чтобы условие стало истинным? Код
i == k
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
19.05.2016, 06:06 | 12 |
Там только с сентября прошлого года. Я раньше писал, по-моему. Поиск по ключевым словам в моих сообщениях вообще ничего не находит.
0
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,538
|
|
19.05.2016, 06:06 [ТС] | 13 |
Рассуждения хоть верны о ходе решения поставленной задачи. За какую правду страдал, если не секрет, чтобы местные Силовые структуры не узнали)
0
|
19.05.2016, 06:08 | 14 |
"Растяжки" - это на нашем зоновском жаргоне - это глобальные мутабельные переменные, доступные из любого места кода Грязно, но для краткости сойдет. Можно было бы на лямбдах написать, с локальными растяжками, но понятнее от этого бы не стало - поверьте А так вы на правильном пути честного реверс-инжиниринга - смотрите в отладчике содержимое растяжки m и что возвращает функция при разных аргументах.
0
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,538
|
|
19.05.2016, 06:09 [ТС] | 15 |
Вы о чём вообще, давно не видились что ли...
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
19.05.2016, 06:12 | 16 |
Элементарно. Упорядочите как-то клетки доски, и начинайте ставить каждого ферзя на самую левую допустимую клетку. Когда очередного ставить уже некуда, начинайте "шевелить" с хвоста. Т.е. передвигаете последнего поставленного на следующую допустимую клетку, а следующих за ним - опять в самую левую допустимую.
0
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,538
|
|||||||||||
19.05.2016, 06:17 [ТС] | 17 | ||||||||||
Смотрел, уже глаза болят смотерть в монитор, возвращает либо
Из main вызывается только функция f(0); с аргументом 0, меня это первоначально смутило тем, что индекс должен как-то увеличиваться, а у вас всё решается как-то и без этого))) Я пробовал с рекурсией порешать, у меня ошибка переполнения стека только выпрыгивает, так что решил по старинке итеративно, но...
0
|
19.05.2016, 06:26 | 18 |
Liss29, ладно, давайте на чисто ту Этот мой код - не самый простой для понимания новичку решения данной задачи. Но зато у вас есть 4 варианта:
1) думать и писать самому 2) разбираться в деталях моей реализации 3) разобраться в АЛГОРИТМЕ моей реализации (увидеть его в коде), а детали написать самому - ту же функцию проверки расстановки 4) поискать другие примеры реализации Полная свобода выбора - смотря что вам интереснее
0
|
225 / 39 / 4
Регистрация: 18.11.2012
Сообщений: 1,538
|
|
19.05.2016, 06:31 [ТС] | 19 |
Хм. Спасибо, попробую только не понятно, первый на (0, 0), следующий как (1, 2), так как на самую левую невозможно его поставить, если первый ферзь уже стоит на (0, 0), но это не совсем то что вы пишете,
Добавлено через 4 минуты _Ivana Мне нужно и в вашем коде разобраться, всё же он компактен, по производительность сказать не могу, но тем неменее надо учиться писать так как вы, а не так как я написал. Думать, я уже сколько думаю, но ничего пока лучшего, чем то, что я выложил не придумал))) Разобраться и написать самому, я вначале темы так и написал.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
19.05.2016, 06:39 | 20 |
Да, это и есть на
Добавлено через 4 минуты
Это кто вам такое сказал? _Ivana парень умный, но его код как раз яркий пример того как писать не нужно. Программа должна быть самодокументируемой и понятной. Многие специалисты считают, что это даже важнее быстродействия и экономии памяти.
0
|
19.05.2016, 06:39 | |
19.05.2016, 06:39 | |
Помогаю со студенческими работами здесь
20
Генерация всех возможных комбинаций Вывод всех возможных комбинаций Выбор всех возможных комбинаций из Списка Сумма вероятностей всех возможных комбинаций Генератор всех возможных комбинаций строки Просчёт всех возможных комбинаций из 6 цифр Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |