![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
Вощем короч, решил тут к олимпиаде по паскалю подготовиться - синтаксис вспомнить. Вот поэтому решил решить несколько задач. Ну решение слау методом гаусса написал.
Терь вторая задачка: Короч есть матрица (карта) - элементы которой данные типа byte, соссно цифры от 0 до 9. Есть начальная точка движения, конечная точка движения - для простоты левый верхний угол (старт), правый нижний угол(енд),двигаться можно только по горизонтали и вертикали, при этом проходя по клеткам нужно чтобы сумма цифр всех клеток по которым прошел была минимальна. Вощем сделал рекурсией, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!но паскаль ругается зараза не хочет компилить, не знаю чё ему не нравиться. При том ошибка вылезает не в самом паскале, а при компиляции вылезает сабж, аля месаж бокс (две кнопки закрыть, пропустить). Заголовок 16 разрядная подсистема MS-DOS, ну и там дальше, типа процессор NTVDM обнаружил недопустимую инструкцию. CS:01d3 IP:044f OP:63 ba a3 ff 00. Для заврешения работы нажмите кнопку "Закрыть". Код программы
входные данные 5 5 0 9 2 3 4 0 3 2 7 4 2 9 3 2 1 9 1 1 1 3 0 5 3 2 0 Это сообщение отредактировал(а) Alexandr87 - 7.1.2005, 19:02 |
|||
|
||||
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
Alexandr87 я конечно не проверял всю прогу, но первое что мне бросилось в глаза, это то что у тебя файловая переменная f определена как текстовый файл, а ты его в программе вызываешь как типизированый "*.in"
Но наверняка это не единственная ошибка, просто у меня щас сессия нету много времени, может ещё кто-нить далее поможет.
Я тоже не знаю, у меня компилится но не запускается, из-за остальных ошибок. |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
Zero
Спасибо конечно за участие, но насчет того что сказал ты - тип файловой переменной влияет только на работу с файлом. Название может быть каким угодно, ну ессесно зависит от ОСи(напр в дос 8.3) |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Zero Он текстовый. Эт того, какое у него расширение, не зависит, типизированный он или нет
Добавлено @ 19:19 Alexandr87 Код смотреть лом, и вообще эта задача не так решается. Попробую объяснить: может, слышал когданить про алгоритм волны? вот тут он и есть. Идешь это первой клетки ко всем соседям. Соседей этих сохраняешь в очередь, а в ячейки новой матрицы в клетки, соотв этим соседям, пишеш путь от первой вершины. Далее береш первого из очереди и ДЛЯ ВСЕХ его соседей делаешь ту же саму операцию только с оговрокой что если ты эту клетку уже находил, то идешь в нее только в том случае если это уменьшает число, которое в ней находится. Если нужно потом узнать путь, по которому прошел, то идешь от последней клетки второй матрицы (матрицы путей) и берешь на каждом шаге минимального ее соседа. Так получаешь с обратной стороны твой путь. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Alexandr87
У тебя проблема в процедуре gomap - она у тебя рекурсивная, и скорее всего ты ошибся с условием выхода - происходит переполнение стека... |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
Может конечно я и ошибаюсь, но помоему мой алгоритм как раз это и делает(это насчет очередности). Добавлено @ 19:31 volvo877 Дык я понимаю, что она рекурсивная, но помоему условия выхода логически построено правильно. Блин стек оферфло |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Это лучше сделать без рекурсии. С очередью.
Тогда и понятнее будет, и быстрее радотать. Я пока не уверен, что у тебя алгоритм правильный. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Zero |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
Вот насчёт понятности согласен, а на счёт быстроты нет... Мы на САПР такой фигнёй в основмном и занимаемся, связанной с улучшением и модификацией программ, и на сколько я помню, то рекурсии для быстроты и придуманы. Даже при оценки достоинств алгоритма, если он использует в основе рекурсию, то говорят что он имеет один из пунктов достоинства "Высокое быстродействие". |
||||
|
|||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Хорошо. У меня у алгоритма сложность n*m. А у вас? Добавлено @ 20:55 И я еще раз повторю, что по-моему, вышеуказанный код неправильный не только потому, что он не компилируется, а неправильный идейно. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Вот. Разбирайтесь. На исходном примере получилось 12. Alexandr87 Если это для олимпиады, значит и тесты должны быть. Я не слишком уверен. На скорую руку набивал. -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
Нет, это хер знает с какой плимпиада, хер знает какой давности, спасибо, щас посотрю
|
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Без выражений плз
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: нет Всего: 61 |
Alexandr87
|
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
Fedor
Ты гений, блин - прикольное решение, и главно работает шустро. Особо благодарю, как тока смогу плюсы раздовать - влеплю те. И в правду очень интересное решение, определять кол-во собранных очков до точки, и тут же не запускать шарилку повторно если меньше...... Большое тебе спасибо. Это сообщение отредактировал(а) Alexandr87 - 8.1.2005, 17:42 |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Я знаю. Добавлено @ 18:00 А еще я знаю, что я очень скромный -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |