Форум программистов, компьютерный форум CyberForum.ru

Количество спиралей - C++

Восстановить пароль Регистрация
 
Dartk
 Аватар для Dartk
10 / 50 / 2
Регистрация: 15.03.2009
Сообщений: 146
17.02.2012, 05:00     Количество спиралей #1
Решение задачи мне не нужно, требуется только логическое разъяснение хода действий.

Спираль — это ломаная не нулевой длинны без самопересечений, вершины которой размещены в точках с целыми координатами на плоскости. Каждое последующее звено ломаной, должно быть повёрнуто на 90 градусов относительно предыдущей по часовой стрелке. Рассмотрим прямоугольник размерами n на m. Для каждой спирали, её первая вершина должна начинаться с левой верхней вершины прямоугольника, а вторая лежит на верхней стороне прямоугольника. Нужно написать программу, которая будет вычислять максимально возможное количество таких спиралей, в границах заданного прямоугольника.

Пример построения спиралей для прямоугольника 2х2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2012, 05:00     Количество спиралей
Посмотрите здесь:

C++ количество букв в слове, количество предложений, самое длинное слово в предложении
C++ Определить количество выигрышей, количество проигрышей и количество ничьих данной команды
В массиве записаны результаты N игр футбольной команды. Определить количество выигрышей, количество проигрышей и количество ничьих данной команды. C++
C++ Найти через индекс количество отрицательных и количество положительных элементов массива
C++ Подсчитать количество всех строк, а потом - количество слов в каждой строке
Определить количество слов в заданном тексте и количество символов в каждом слове C++
Определить количество лет, в которые количество осадков превышало среднегодовое C++
Пользователь вводит строку. Определить количество букв (рус eng), количество цифр и количество остальных C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
17.02.2012, 07:55     Количество спиралей #2
Цитата Сообщение от Dartk Посмотреть сообщение
Решение задачи мне не нужно, требуется только логическое разъяснение хода действий.
Я бы решал эту задачу рекурсией. Глобально объявил бы int res=0; и массив bool a[n][m]={false};
Перед началом вызова рек.функции:
a[0][0]=a[0][1]=true;
затем вызов рек.функции: rec(0, 1, 0);
Сама рек.функция:
C++
1
2
3
4
5
6
void rec(int ii, int jj, int napr)// ii - Г*îìåð ñòðîêè îòêóäГ* Г±ГІГ*ðòóåì, jj - Г*îìåð ñòîëáöГ* îòêóäГ* Г±ГІГ*ðòóåì, napr - Г*Г*ГЇГ°Г*âëåГ*ГЁГҐ ГЄГ*ГЄГЁГ¬ ïîïГ*ëè Гў Г±ГІГ*ðòîâóþ òî÷êó
{
    res++;
    // çäåñü ó÷èòûâГ*Гї napr îïðåäåëÿåòå äâГ* âîçìîæГ*ûõ Г*Г*ГЇГ°Г*âëåГ*ГЁГї, ГЁ åñëè ìîæГ*Г® õîäèòü Гў ГЅГІГЁГµ Г*Г*ГЇГ°Г*âëåГ*ГЁГїГµ (ГЅГІГ® îïðåäåëÿåòñÿ Г§Г*Г*Г·ГҐГ*ГЁГҐГ¬ Г¬Г*Г±Г±ГЁГўГ* a[][]), ГІГ® âûçûâГ*éòå rec(). ГЌГҐ Г§Г*áûâГ*éòå ïîìå÷Г*ГІГј ïðîéäåГ*Г*ûå òî÷êè ïåðåä âûçîâîì rec() ГЁ Г*ГҐ Г§Г*áûâГ*éòå ГіГЎГЁГ°Г*ГІГј ГЅГІГЁ ìåòêè ïîñëå âûçîâГ* rec()
 
}
Yandex
Объявления
17.02.2012, 07:55     Количество спиралей
Ответ Создать тему
Опции темы

Текущее время: 11:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru