Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача о 8-ми ладьях. Сделал, но итеративно, а нужно рекурсивно

440
11 октября 2009 года
[FENIX]
83 / / 29.01.2007
Ребят, помогите мне пожалуйста: На шахматной доске нужно разместить 8 ладей так, чтобы ни одна ладья не угрожала другой. Я сделал, но итеративно, подскажите, как это можно сделать рекурсивно.

Язык C#.

http://sources.codenet.ru/download/3387/Placing_of_8_castles.html
29K
12 октября 2009 года
Ander Skirnir
109 / / 08.06.2009
С алгоритмом не разбирался, но втупую преобразовать итерацию в рекурсию можно, например, так:
Код:
// итерация
void f(...)
{
    for (int k = 0; k < s; ++k)
        g(k);
}

// рекурсия
void f(..., int k = 0)
{
    g(k);

    if (k < s)
        f(..., k + 1);
}
5
12 октября 2009 года
hardcase
4.5K / / 09.08.2005
Ё-моё, задача описана у Вирта в "Алгоритмах и структурах данных" (про ферзей правда) в нормальной рекурсивной форме ибо это типичный алгоритм с бэктрэкингом. Представляю, как она ужасно выглядит в итеративной форме!

З.Ы. Хотя с ладьями задача не имеет смысла: расставил их по диагонали - и все дела.
842
12 октября 2009 года
sigmov
301 / / 16.09.2008
Вот что получил я на скорую руку
Код:
class Program
    {

        static List<int> LstInt = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 };
        static Random R = new Random(DateTime.Now.Millisecond);

        static void NextRoundPos(int n)
        {
            if (n == 0) return;
            else
            {
                int now = R.Next(n);
                Console.WriteLine(string.Format("[{0},{1}]", n, LstInt[now]));
                LstInt.RemoveAt(now);
                NextRoundPos(n - 1);
            }
        }

        static void Main(string[] args)
        {
            NextRoundPos(8);
        }
    }
29K
12 октября 2009 года
Ander Skirnir
109 / / 08.06.2009
Точно, ладьи жеж! :)
Ну тогда итерацией задача решается лаконичнее, чем рекурсией :rolleyes:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог