Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

kaminka avatar kaminka 5 Точки

JA1. Task3 Fill Matrix

Здравейте,

Има ли някой, който да е решил тази задача без "flood fill algorithm", а по някакъв друг начин?

Доста варианти мислих, но нито един не стана съвсем. Много ми е интересно просто ако някой я е решил без да използва този алгоритъм, ако иска да си сподели кода, за да го разгледам. 

Камелия

Тагове:
0
C++ Programming
IvanMitkov avatar IvanMitkov 20 Точки

Аз я реших с BFS но и с DFS става, а сигурно ако се напъне човек и с по сложните алгоритми върху графи ще стане.

0
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки

Да, но тя търси друго решение - flood fill algorithm общо взето е специализиран bfs/dfs, тоест над bfs/dfs алгоритъма слагаш особеностите за конкретен "fill color" както в задачата и го правиш да счита многомерния масив за граф (алгоритъмът е общо взето същия за N-мерен масив, не е нужно да е 2D). С две думи, ако си го решил с bfs/dfs, значи си написал flood fill algorithm :)

0
IvanMitkov avatar IvanMitkov 20 Точки

Сега му погледнах по-подробно псевдокода. Всъщност почти същото на това което в уикипедия са го нарекли "Forest Fire algorithm" съм правил, само където ми се получи доста по-дървено, със струва ми се излишни стъпки.


 
0
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки

Здравей,

Не мога да се сетя за различен алгоритъм - дори и за по-малко ефективен алгоритъм, които би работил. Общо взето каквото и да напишеш все ще прерасне в някаква форма на bfs/dfs (дори да е прикрито зад нещо друго), което означава, че ще е flood fill. 

Едно нещо, което може би би ти било интересно, е да ползваш Point in Polygon algorithm-а - тоест да проверяваш дали всяка една клетка е в многоъгълника в матрицата, вътрешността на който оцветяваш. Но това ще работи само за случаи, когато наистина има някакъв многоъгълник, в който се намираш - за случаи като първите 2 примера за входни данни няма да работи много добре (или поне ще трябва насила да създаваш някакъв многоъгълник).

Наистина не се сещам за нещо, което би работило - ако някой колега се сети, нека каже. Но каквото и да е няма да е по-ефикасно от flood fill-а (bfs/dfs-а), защото той работи за минималното възможно време - приблизително колкото клетки има за оцветяване, толкова повторения ще се изпълнят - не би трябвало да има по-ефикасен подход от това. Но е хубаво, че се интересуваш, това е хубав подход към ученето.

Поздрави,

Жоро

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.