|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
|
Расстановка N ферзей на шахматной доске N×N30.12.2020, 12:07. Показов 20362. Ответов 28
Требуется расставить N ферзей на шахматной доске N×N таким образом, чтобы никакие два ферзя не били друг друга.
Расстановку необходимо вывести в виде N строк из 2N - 1 символов, где символ '.' означает пустую клетку, символ 'Ф' - ферзя, а пробел служит разделителем. Входные данные: Вводится единственное натуральное число N (4 <= N <= 200). Выходные данные: Выведите искомую расстановку ферзей. Пример: Ввод: 4 Вывод: . Ф . . . . . Ф Ф . . . . . Ф . Ограничения: Время: 1 с Память: 64 Мб
0
|
|
| 30.12.2020, 12:07 | |
|
Ответы с готовыми решениями:
28
Расстановка ферзей Расстановка ферзей |
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
|
| 30.12.2020, 12:18 | |
|
КулХацкеръ, What???
0
|
|
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
|
| 30.12.2020, 12:25 [ТС] | |
|
Gdez, в смысле? Что ты хотел сказать этим вопросом?
0
|
|
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
|
| 30.12.2020, 12:30 | |
|
КулХацкеръ, Это прикол?
Просто я считаю, что для твоего уровня это "семечки"
0
|
|
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
|
| 30.12.2020, 12:40 [ТС] | |
|
Ну не знаю, как по мне задачи довольно приличные по сложности.
Сейчас с удовольствием ломаю над ними голову, думаю на пару часов этих задач точно хватит мне).
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 30.12.2020, 12:52 | |
|
0
|
|
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
||
| 30.12.2020, 13:02 [ТС] | ||
|
Если кому-то интересно, то задачи были ранжированы по сложности так:
Расстановка N ферзей на шахматной доске N×N: * Количество расстановок N ферзей на шахматной доске N×N: *** Количество расстановок нескольких (K) ферзей на шахматной доске N×N: **** Путь коня по всем клеткам шахматной доски N×M: * Будет здорово увидеть решение задач с тремя звездами и более - это точно не "семечки"! Добавлено через 4 минуты
Добавлено через 36 секунд Возможно туплю страшно, ведь у этой задачи всего одна звезда.
0
|
||
|
|
|
| 30.12.2020, 13:05 | |
|
Ну если надо любую расстановку - то всё просто. Ставим на произвольную клетку, затем на следующую не под боем, и т. д., пока останется хотя бы одна не под боем. (Т. к. ферзь бьёт симметрично во все стороны, можно утверждать, что новый ферзь не будет бить старых.)
2
|
|
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
||
| 30.12.2020, 13:37 [ТС] | ||
|
Да я примерно так и делаю, но количество необходимых проверок растет просто жесть!
Гляньте ограничения:
И потом, если алгоритму не удается с первого раза расставить всех ферзей, приходится возвращаться назад и пробовать другие небитые поля, что еще больше увеличивает время выполнения программы
0
|
||
|
|
|
| 30.12.2020, 14:01 | |
|
КулХацкеръ, не понял, какие проверки?
С каждым новым ферзём мы просто помечаем новые клетки под боем. Всё. Потом просто надо будет просмотреть отмеченые, чтобы найти первую попавшуюся свободную.
0
|
|
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
|||||||
| 30.12.2020, 14:14 [ТС] | |||||||
|
Я проверял, что каждый новый ферзь не бьет предыдущих.
То есть для второго ферзя одна проверка, для третьего две проверки, ..., для 200-го 199 проверок. Неэффективный алгоритм, согласен. Но даже с твоим актуальна проблема:
Добавлено через 1 минуту И с другими задачами помогите плиз, уже час прошел, а я решил только одну задачу, причем самую простую . Я надеялся за два часа решить все задачи ((.
1
|
|||||||
|
|
|
| 30.12.2020, 14:36 | |
|
КулХацкеръ, чёта всё равно не понял.
Я же выше написал - ферзь бьёт симметрично, поэтому можно не проверять, что новый ферзь не бьёт предыдущих. Вот с пешкой надо было бы провенять, а симметрично бьющую фигуру - нет.
0
|
|
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
|
| 30.12.2020, 14:45 [ТС] | |
|
Я и проверял только, что каждый новый ферзь не бьет предыдущих. То, что предыдущие ферзи бьют нового, я не проверял (точнее, проверка для нового ферзя дает ответ на этот вопрос).
Добавлено через 5 минут И в любом случае, решение в итоге получилось другое (на основе алгоритма из Википедии).
0
|
|
|
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
|
||||||
| 30.12.2020, 15:25 | ||||||
|
Как на счёт такого решения? Оно основано не на математике, а на наблюдении.
3
|
||||||
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
||
| 30.12.2020, 16:08 [ТС] | ||
|
unfindable_404, решение верное (за исключением того, что разделитель заменил с пустой строки на пробел).
0
|
||
|
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
|
||||||||||||||||||||||||||||||||
| 30.12.2020, 17:38 | ||||||||||||||||||||||||||||||||
|
Я всегда начинаю решать подобные задачи с перебора возможных итогов на маленьких входных данных, с целью поиска закономерностей. Сначала разобрал вариант с n=4: Кликните здесь для просмотра всего текста
x - поле под боем
Попробовал начать с ферзя, расположенного в углу:
Пробую начать с ферзя на второй клетке
Далее рассмотрел вариант с n=5 Кликните здесь для просмотра всего текста
Начал с ферзя, расположенного в углу:
На данном этапе у меня сформировалась гипотеза, что при нечетном n, нужно начинать с угловой клетки, а при четном, со второй клетки. И ещё я заметил, что следующий ферзь нужно ставить со сдвигом вниз на одну клетку и вправо на две клетки. Ну и дальше я, просто, составил несколько расстановок с бОльшим значением n, чтобы подтвердить или опровергнуть предположение. Кликните здесь для просмотра всего текста
n = 8
n = 9
Предположение подтвердилось и я написал скрипт.
1
|
||||||||||||||||||||||||||||||||
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
|
| 30.12.2020, 18:16 [ТС] | |
|
unfindable_404, шикарное объяснение, спасибо большое.
0
|
|
|
Супер-модератор
|
||||||
| 30.12.2020, 20:03 | ||||||
|
Вот мое решение... Задача-то классическая - бэктрекинг. Все руки не доходили "въехать". n ферзей на поле n*n:
n=5 !!! [(0, 0), (2, 1), (4, 2), (1, 3), (3, 4)] !!! [(0, 0), (3, 1), (1, 2), (4, 3), (2, 4)] !!! [(1, 0), (3, 1), (0, 2), (2, 3), (4, 4)] !!! [(1, 0), (4, 1), (2, 2), (0, 3), (3, 4)] !!! [(2, 0), (0, 1), (3, 2), (1, 3), (4, 4)] !!! [(2, 0), (4, 1), (1, 2), (3, 3), (0, 4)] !!! [(3, 0), (0, 1), (2, 2), (4, 3), (1, 4)] !!! [(3, 0), (1, 1), (4, 2), (2, 3), (0, 4)] !!! [(4, 0), (1, 1), (3, 2), (0, 3), (2, 4)] !!! [(4, 0), (2, 1), (0, 2), (3, 3), (1, 4)]
1
|
||||||
|
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
|
|
| 30.12.2020, 21:18 [ТС] | |
|
Catstail, если вы ничего не перепутали и написали в той теме, в которой планировали, то ваше решение не соответствует постановке задачи.
А если ваше решение предназначалось для темы Количество расстановок N ферзей на шахматной доске N×N, то увы, оно проходит только 9 тестов из 12, а три теста не проходит по времени. Но все равно спасибо. Чем больше вариантов, тем лучше.
0
|
|
| 30.12.2020, 21:18 | |
|
Помогаю со студенческими работами здесь
20
Расстановка ферзей Расстановка ферзей на шахматной доске
Получить m расстановок 8 ферзей на шахматной доске, при которых ни один из ферзей не угрожает другому Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|