Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 23:44   #1
Маринка777
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 12
По умолчанию Рекурсия-Шахматы

Для шахматной доски размера k*k (k<=7) определить минимальное количество f (f < k) ферзей так, чтобы существовала такая их расстановка, что каждое поле доски находится под ударом хотя бы одного ферзя.

Какие есть идеи по поводу алгоритма?
как я понимаю, тут функция должна вызывать саму себя..
Маринка777 вне форума Ответить с цитированием
Старый 03.12.2009, 15:58   #2
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Массив полей шахматной доски лучше сделать глобальной переменной.

Внешний цикл: перебираем количество ферзей n от 1 до k, вызывая рекурсивную функцию f(n).

Эта функция принимает аргумент - количество оставшихся ферзей.
-Если n=0, проверяем главное условие ("каждое поле доски находится под ударом хотя бы одного ферзя"):
--Если не выполняется - выходим из функции.
--Если выполняется - выдаём ответ и выходим из программы.
-Если n>0, перебираем возможные позиции ферзя, вызывая каждый раз f(n-1).

Последний раз редактировалось ds.Dante; 03.12.2009 в 16:01.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишу шахматы на делфи -COREY- Gamedev - cоздание игр: Unity, OpenGL, DirectX 32 07.05.2011 19:32
задача шахматы darter96 Помощь студентам 7 25.06.2009 13:43
Шахматы онлайн LAGOX PHP 1 08.05.2009 21:15
Delphi шахматы kacky Помощь студентам 3 30.10.2008 20:09
Шахматы Shchetnev Фриланс 10 27.05.2008 00:36