|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.03.2013, 22:28 | #11 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Цитата:
1) узнать 2) откинуть мое решение, т.к. в его основе лежат пользовательские проц\функ |
|
17.03.2013, 22:30 | #12 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
|
17.03.2013, 22:33 | #13 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
|
17.03.2013, 22:33 | #14 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
s-andriano, огромное Вам спасибо!
Дело в том что сейчас в нашей области (Ярославской) проводится турнир, там есть задача, где одной из подзадач является задача аналогичная данной. (где-то слова "задача" не хватает ) Там наша команда использовала рекурсию (и не очень эффективную), а оказывается можно обойтись меньшей кровью Еще раз спасибо!) Ужасъ.. Злая АнтиНакруточнаяСистема не дает поставить плюс.. Ладно.. потом дас Бог вспомню.. |
17.03.2013, 22:40 | #15 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Как вариант:
1. Строим двумерный массив леса, заполняя элементы нулями и единицами: 0 - дерева нет, 1 - дерево. 2. Задаем направление ветра - опционально. 3. Выбираем дерево для поджига. 4. Подоженное дерево помечаем кодом два, к примеру. 5. В цикле просматриваем массив. 6. Если находим горящие деревья, то поджигаем деревья, которые рядом и в направлении ветра. Факт поджига контролируем флажком, котоый в начале цикла - false. 7. Если находим подожженные деревья, то переводим их в ранг горящих - код три, например. 8. Выводим массив на экран. 9. Делаем задержку по времени. 10. Подсчитываем время в виде числа тактов. 12. При достижении ситуации, когда нет подожженых деревьев, флажок = false, прекращаем расчет. 11. Переходим в начало цикла. 12. Выводим окончательный результат. При задании силы ветра, можно ввести в модель поджиг не только рядом стоящих, но и на шаг далее отстоящих. Далее можно фантазировать ... Например, поджиг дерева делаем вероятностным, скажем 50%. При просмотре контролируем, что на предыдущем такте мы уже применили вероятностный подход к данному дереву и поджигаем его. Графически можно представить деревья точками зеленого цвета, подожженные - желтого, горящие - красного, выгоревшие - ... Вот еще. Выгоревшие - код, например, 5 или 7. На каждом шаге добавляем единицу к коду горящего дерева ... Как-то так ...
Как-то так, ...
|
17.03.2013, 22:46 | #16 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
s-andriano,Виктор, а есть у Вас какие-либо другие вариант без в цикле просматриваем массив и очередей и "волн"?
|
17.03.2013, 22:53 | #17 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Иначе они называются API (Application Programming Interface). Если не лень, Вы их можете и сами для себя создать в виде Dll-ки или просто отдельного файла.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
17.03.2013, 23:07 | #18 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Есть конечно.
Строим объект - дерево. Наделяем его некоторыми характеристиками, определяющими стойкость к огню, скоростью возгарания, длительностью горения, которая в частности, может зависить как от возраста дерева, так и его влажности. И.т.п. В том числе, как характеристика - способность поджечь другое дерево. Строим лес в виде некоторого набора процессов, которые обслуживают каждое дерево и поджигаем выбранное дерево. Далее процесс продолжается в автоматическом режиме. Подожженное дерево, если оно может поджечь соседнее, создает процесс для соседнего дерева и посылает ему сообщение и сосед начинает изображать процесс возгарания и горения. Это же дерево само изображает себя на экране ... Сгоревшее дерево - процесс завершается. Это только пофантазировать. Как-то так ...
Как-то так, ...
|
18.03.2013, 00:12 | #19 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Да это и не нужно - берем из нее все элементы подряд и сразу используем. Ни один не пропадает. "волна" также хранится в очереди. А вот если деревья заданы координатами, причем, в беспорядке (как, видимо, предполагает ТС в первом сообщении темы), то поиск в массиве ближайших деревьев для каждого из горящих - достаточно неприятная операция, и ее желательно было бы оптимизировать, например, с использование квадрадерева. |
|
18.03.2013, 00:23 | #20 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Браттцы, да за что-ж так машину бить? Массив и от углов тройками координат.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужно доделать задачу | гоша37 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 27.11.2012 12:18 |
доделать задачу | Sylar9 | Общие вопросы C/C++ | 0 | 06.05.2012 11:48 |
Не могу доделать задачу | X-REY | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 25.10.2011 20:50 |
Помогите доделать задачу | n1ce > Kuzia | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 08.01.2009 11:42 |
Помогите доделать задачу!!!! | Vincenzo | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 11.05.2008 09:35 |