![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| rlzz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.7.2006 Репутация: нет Всего: нет |
дана матрица 5 на 3
нужно ее запонить таким образом 1_2_3_4_5 12-13_14_15_6 11_10_9 _8_ 7 какие мысли у кого я второй час сижу позеленел уже ... помагите PS Прозьба не пинать видел я тут алгоритмы на матрицы 10 *10 5*5 ... они не помагли... |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
rlzz, все просто на самом деле:
|
|||
|
||||
| rlzz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.7.2006 Репутация: нет Всего: нет |
|
|||
|
||||
| obsidium |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
volvo877, Привет,столкнулся вот с такой задачей:
http://imcs.dvgu.ru/cats/main.pl?f=problem...7nor;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 Покопался на форумах в поисках алгоритма и наткнулся на твой алгоритм вот здесь: http://forum.vingrad.ru/forum/topic-166088/unread-1.html Дело в том,что программу я написал.Только на Time limit exceeded on test 26. Подскажи как сгенерировать одну строку эффективней. Вот код Delphi: program spiral; {$APPTYPE CONSOLE} uses SysUtils; {$apptype console} type MyArray=array of Int64; var a:MyArray; i,j,c,r:integer; t1,t2:text; n,t:int64; begin assign(t1,'input.txt'); reset(t1); assign(t2,'output.txt'); rewrite(t2); read(t1,n,r); SetLength(a,n); //for i:=0 to n-1 do //SetLength(a[i],n); i := 1; j := 1; c := 0; t := n*n; repeat while (j <= n - c) do begin if (i=r) then A[j-1] := t; inc(j); dec(t); end; inc(i); dec(j); while (i <= n - c) do begin if (i=r) then A[j-1] := t; inc(i); dec(t); end; dec(j); dec(i); while (j >= 1 + c) do begin if (i=r) then A[j-1] := t; dec(j); dec(t); end; inc©; inc(j); dec(i); while (i >= 1 + c) do begin if (i=r) then A[j-1] := t; dec(i); dec(t); end; inc(j); inc(i); until c > n div 2; for j:=0 to n-1 do write(t2,a[j],' '); close(t1); close(t2); end. P.S. Буду весьма признателен,если поможешь.Эту задачу я долго мучал,но никак не могу добиться окончательного эффективного решения. Присоединённый файл ( Кол-во скачиваний: 2 )
spiral.dpr 1,10 Kb |
|||
|
||||
![]()
|
| Правила форума "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. |