![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
DarkWishmaster |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: ![]() ![]() ![]() |
Привет.
Я пробовал вот таким алгоритмом, но он не пашет. Надо пройти массив зиг-загом и вывести каждое число на экран. Например: INput: 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Output: 13 14 9 5 10 15 16 11 6 1 2 7 12 8 3 4
![]() ║ Сообщение отредактировано: DarkWishmaster - 30.01.2011 21:23 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
На самом деле все очень просто, не надо всех этих ужасных циклов. Делаем так:
const, на выходе - то, что ты просил... |
Krjuger |
![]()
Сообщение
#3
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Ну для начала,непонятно какое первоначальное значение принимает ваше k... первое упоминание о нем, в том что вы выложили, лиш когда вы его повышаете (inc(k)).Во вторых,у вас 3 бегина и 2 энда...непонятно как организованы циклы.А в третьих,как я понял у вас идет 2 вложеных цикла и сложность алгоритма n в кубе,что не очень хорошо для больших матриц.
Я могу предложить вам такую идею,можете ее рассмотреть. У нас есть 4 возможных направления движения.Вправо,вверх,влево-вверх,вправо-вниз.Что если организовать 1 цикл и в нем проверять,куда можно пойти с условием приоритетов ходов.Например. Мы стартуем с точки (n;1)сначала мы проверяем можем ли мы сделать шаг влево-вверх,нет не можем,выходим за граници,тогда проверяем можем ли мы сделать шам вправо,да можем идем туда,теперь мы в (n;2),проверяем можем ли мы вверх-влево,да можем идем туда.Тперь мы в (n-1;1),проверяем вверх влево,нет не можем.смотрим вправо,да можем.тогда проверяем,какой был предыдущий шаг,он был вверх-влево,тогда проверяем можем ли мы вверх,,если да то идем вверх.если нет то идем вправо.Да мы можем, идем в верх. Ну и так далее.В общем мы создаем приоритеты по направлению движения и ставим условия так,чтобы у нас нельзя сделать шаг после вверх-влево сразу вправо,если у нас есть возможность сдвинуться вверх.ну и другие подобные ходы.Сложность этого алгоритма N,что достаточно выгодно для больших матриц,правда с условиями надо достаточно сильно проработать. |
DarkWishmaster |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
DarkWishmaster |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот сделал своим способом, показывает всё отлично, помогите упростить, а то слишком много букв.
у volvo там только для N=4 Сообщение отредактировано: DarkWishmaster - 1.02.2011 20:56 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата у volvo там только для N=4 Да ты что? А если я изменю на N = 5 и подкорректирую описание матрицы А - то программа что, не запустится? Тогда скажи, почему. Потому что у меня она запускается и работает. Вот я хочу узнать, почему она работает, если не должна... |
DarkWishmaster |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да ты что? А если я изменю на N = 5 и подкорректирую описание матрицы А - то программа что, не запустится? Тогда скажи, почему. Потому что у меня она запускается и работает. Вот я хочу узнать, почему она работает, если не должна... Да нет, если читать N с клавиатуры то бред выводит на экран. Сообщение отредактировано: DarkWishmaster - 1.02.2011 21:19 |
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
2 DarkWishmaster:
у volvo там только для N=4 Да нет, если читать N с клавиатуры то бред выводит на экран. Давай условимся: если программа переделана (хоть немного), то это уже не "у volvo", а у тебя. И означает это только то, что ты не можешь даже полностью рабочую программу немного модифицировать для своих нужд..Ошибаться у тебя право есть. Для того ты сюда и пришел, чтоб ошибки исправлять. У тебя нет права приписывать свои ошибки другим. Это понятно? ![]() Программа volvo прекрасно работает для всех n. Покажи, что ты в ней "наисправлял" - будем разбираться. А то так сказать "у volvo там.." - и ничем не подтвердить - это, знаешь ли, некрасиво.. ![]() 2 volvo: я тоже не удержался и сделал свой вариантик ![]() const Если честно, довольно долго с ним провозился (больше часа в общей сложности). Изюминка - правильно описать разворот. Как это водится, в конце концов он вписался в одну элегантную строчку (сердце)). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
DarkWishmaster |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: ![]() ![]() ![]() |
Lapp, спасибо.
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:26 |