| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Спиральный обход с выводом строки |
| Автор: obsidium 15.10.2010, 12:34 | ||
| Привет всем,столкнулся вот с такой задачей: http://imcs.dvgu.ru/cats/main.pl?f=problem_text;cpid=715083;sid=RtKf3upCs5Z0Muoe6zr1EC8fpd7nor;cid=715078 Задача B. Спираль Входной файл: input.txt Ограничение времени на тест: 1 сек Выходной файл: output.txt Ограничение памяти на тест: 64 Мб Условие: Квадратная матрица размера n*n заполнена целыми числами от 1 до n*n следующим образом. В левом верхнем углу находится число n*n. Остальные числа, начиная от n*n-1 вплоть до 1, располагаются в порядке убывания по спирали, закрученной по часовой стрелке. Например, при n = 2 и n = 3 матрица принимает вид: 4 3 9 8 7 1 2 2 1 6 3 4 5 Требуется по данному размеру матрицы n и номеру r вывести r-ю строку матрицы. Формат входного файла: Входной файл содержит натуральные числа n и r. Формат выходного файла: Выходной файл должен содержать n чисел — r-ю строку матрицы. Ограничения: 1<r<n<10^5 Примеры тестов № Входной файл Выходной файл 1 2 1 4 3 2 3 2 2 1 6 3 4 3 6 1 2 11 Дело в том,что программу я написал.Только на Time limit exceeded on test 26. Подскажите программеры всего мира как сгенерировать только одну строку каким-либо эффективным алгоритмом,чтобы и памяти мало занимало и выполнядось за 1 секунду. Вот код Delphi:
P.S. Буду весьма признателен.Эту задачу я долго мучал,но никак не могу добиться окончательного эффективного решения. Модератор: пользуемся кнопкой "Код" |