|
Задача
|
|||
---|---|---|---|
#18+
Сразу оговорюсь, если отвлекаю от важных дел не отвечайте. Позвонил племянник, помогает подруге решать задачу. Есть массив(лабиринт) скажем 15х15. Заполнен 0 и 1. Надо пройти сверху вниз по нолям к выходу. Все сделал, нарисовал лабиринт, заполнил 0 и 1, но вот пройти не получается. Пробуем все время идти если 0 то вперед, если 1 то вправо по идее должен пройти, но не тут то было. Если есть алгоритм прохода сбросте пожалуйста, может решал кто уже? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 14:34 |
|
Задача
|
|||
---|---|---|---|
#18+
Не уверен, что правильно понял, лабиринт выглядит так? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 16:44 |
|
Задача
|
|||
---|---|---|---|
#18+
[Картинка по пути потерялась] ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 16:45 |
|
Задача
|
|||
---|---|---|---|
#18+
Да может именно так (формируется случайно), но как решить? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 17:43 |
|
Задача
|
|||
---|---|---|---|
#18+
I tak ponyla,chto idti nado sverhy vniz i ne obyzatelno esli 0 to vpered,esli 1 to vpravo(eto vi vibrali takoy algoritm)poprobyute tak: Pole(15,15) array y, x EndGame Boolean peremennaya ishy tochky vhoda sverhy v labirint y=1 for x=1 to 15 if Pole(y,x)=0 then Pole(y,x) = 1 EndGame = False While EndGame = False --pervim proveryu dorogy vniz(potomy chto zel douti do nizy,chem bistree) if Pole(y+1,x) = 0 Then Pole(y+1,x) = 1 y = y+1 goto NextCheck End if --proveryau pravo if Pole(y,x+1) = 0 Then Pole(y,x+1) = 1 x = x+1 goto NextCheck End if --proveryau Levee if Pole(y,x-1) = 0 Then Pole(y,x-1) = 1 x = x-1 goto NextCheck End if --proveryu vverh if Pole(y-1,x) = 0 Then Pole(y-1,x) = 1 y = y-1 goto NextCheck End if NextCheck: --proveryu mojet bit yje konez labirinta if Pole(y+1,x) = 1 and Pole(y,x-1) = 1 and Pole(y,x+1) = 1 and Pole(y-1,x) = 1 then EndGame = true Exit sub end if Wend end if next x ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 20:01 |
|
Задача
|
|||
---|---|---|---|
#18+
спасибо попробуем, но почему EndGame Boolean peremennaya ishy tochky vhoda sverhy v labirint y=1 for x=1 to 15 if Pole(y,x)=0 then Pole(y,x) = 1 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 22:28 |
|
Задача
|
|||
---|---|---|---|
#18+
Potomy-chto vezde gde mi nashli 0 zamenyem na 1,chto- bi ne popast v beskonechniy zikl,mojno i bez etogo na pervom shage(vsegda perestrahovivaus) dlya privedennogo primera na kartinke etot algoritm rabotaet,kak mne kajetsya dlya ostalnix variantov toje ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 22:50 |
|
Задача
|
|||
---|---|---|---|
#18+
А если назад возвращаться прийдется? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 23:01 |
|
Задача
|
|||
---|---|---|---|
#18+
Andrey13: poprobyute prouyi po-etomy labirinty s pomoshu eto-algoritma i posmotrite kogda vam pridetsya vozvrashatsya nazad? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 23:18 |
|
Задача
|
|||
---|---|---|---|
#18+
Andrey13:Vi pravi mojet ponadobitsya idti nazad,k sojaleniu I yje ybegau domoy,esli vam tak srochno,to v etot algoritm mojno dobavit promejytochniy massiv tipa PreviousStep(x,y) gde sohranyt odin shag nazad ili poly kotorie proshli stavit 2 vmesto 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2005, 23:43 |
|
Задача
|
|||
---|---|---|---|
#18+
guest123 большое спасибо за поддержку, я вообще думал что кто то уже решал такую задачу, и есть готовое решение. Мой племянник уже вышел из порложения, на сколько я понял по телефону, он создал несколько подпрограмм Vpered, Nazad, Vpravo, Vlevo, и пользовался этими подпрограммами в момент прохождения лабиринта. Для того и задачи что бы молодеж училась. Хотя любой голову бы поломал над этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2005, 07:59 |
|
Задача
|
|||
---|---|---|---|
#18+
Решал давно на паскале похожий алгоритм, исходников ессно не сохранилось, но идею помню. В основе всего лежит рекурсия. Не самый быстрый способ, но для поля 15х15 пойдет. Процедура будет выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1. 2. 3. 4. 5. 6.
А насчет того, чтобы "пройти назад"... хоть вперед, хоть назад, хоть вбок. Конечный результат задается координатами, а этот алгоритм блуждает по лабиринту вслепую, ему пох, куда идти. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2005, 10:14 |
|
Задача
|
|||
---|---|---|---|
#18+
Вот весь листинг: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2005, 10:20 |
|
Задача
|
|||
---|---|---|---|
#18+
Слегка затупил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2005, 10:23 |
|
Задача
|
|||
---|---|---|---|
#18+
Спасибо большое. Отошлю пускай посмотрит. Но у него тоже работает, только что вечером заходил смотрел. Правда код длинный. Только я не понял, у тебя будет бродить пока до конца не дойдет В СЛЕПУЮ, или я ошибаюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2005, 18:53 |
|
Задача
|
|||
---|---|---|---|
#18+
Именно. Преставь себе слепого в коридоре. Он сделал шаг, повел палкой налево - стена, вперед - стена, направо - проход есть. Сзади елозить не нужно, потому что оттуда пришел. Делает шаг направо. Опять елозит палкой. Однако, если зашел в тупик, ему не надо точно так же вслепую брести в обратную сторону. Благодаря рекурсии все повороты уже в памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 11:16 |
|
Задача
|
|||
---|---|---|---|
#18+
Еще один момент. Лучше заменить условия Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 11:22 |
|
Задача
|
|||
---|---|---|---|
#18+
Тогда все правильно получается что и не слепой. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2005, 18:17 |
|
Задача
|
|||
---|---|---|---|
#18+
Andrey13, а это решение ратоает черз Excel? мне надо 0 и 1 самому вводить на странице эксель а потом проверять, можно ли пройти от ячейки А1 до противоположного конца...размер вводимой матрицы произвольный...не поможете? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2011, 14:47 |
|
|
start [/forum/topic.php?fid=60&tid=2158717]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
150ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 261ms |
0 / 0 |