Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2015, 20:04
Drob29 Drob29 вне форума
Прохожий
 
Регистрация: 22.05.2015
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию нужно решить одну задачку

мне нужно решить одну задачку:
У Серёжи есть шахматная доска n на n клеток и много ладей. Он уже расставил на ней несколько ладей так, что они не бьют друг друга (напоминаем, что шахматная ладья бьет все клетки, находящиеся с ней на одной вертикали или одной горизонтали). Теперь он хочет поставить еще несколько ладей так, чтобы по прежнему никакая ладья не била другую. Кроме того, каждая клетка поля должна либо биться какой-то ладьей, либо на ней должна стоять ладья. Серёжу интересует вопрос, а сколькими способами он может это сделать?

Формат файла входных данных:
Сначала даны два числа n и k (1 <= n <= 12, 0 <= k <= n) - размер доски и количество ладей, уже стоящих на поле.
В следующих k строках по два числа: номер вертикали и номер горизонтали, на пересечении которых стоит очередная ладья. Гарантируется, что ладьи не бьют друг друга.

Формат файла выходных данных:
Выведите одно число - количество способов доставить еще ладей так, чтобы указанные условия были выполнены

Комментарий:
В первом примере ладьи стоят в левом нижнем и правом верхнем углах. Тогда получить требуемый результат можно поставив ладьи либо на поля с координатами (2, 2) и (3, 3), либо на (2, 3) и (3, 2).
Во втором примере ладьи уже бьют все клетки, поэтому существует единственный способ - ничего не делать.
Ответить с цитированием
  #2  
Старый 22.05.2015, 22:44
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Drob29
...У Серёжи есть шахматная доска n на n клеток и много ладей. Он уже расставил на ней несколько ладей...
Может я совсем русский образ забыл в долгой командировке, но всё же мяконький знак не следует забывать
Ответить с цитированием
  #3  
Старый 25.05.2015, 11:40
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

По моему, независимо от того ГДЕ уже стоят ладьи, КОЛИЧЕСТВО способов расстановки остальных зависит только от их количества.
То есть если на доске n*n стоят k ладей, то остальные можно расставить
(n-k-1)*(n-k-2)*(n-k-3)*...*(3)*(2)*(1) способами. А вот если нужно указать ВСЕ эти расстановки, то координаты уже установленных ладей конечно же нужны.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025