IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Тест на логику (олимпиадные задачи)
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


Народ, предложите своё решение...

1. Составить алгоритм заполнения прямоугольной таблицы размером N*N целыми числами от 1 до N*N по спирали. Пример для N=5.
Цитата
  1        2        3        4      5
16      17      18      19      6
15      24      25      20      7
14      23      22      21      8
13      12      11      10      9

2. Переставить две части массива А из n элементов, первая часть - элементы с номерами от 1 до m, вторая - от m+1 до n. При этом порядок элементов в каждой из частей должен быть сохранен и нельзя использовать дополнительные массивы.
Пример. n=9, m=5
Вход: 9 4 7 2 3 5 8 1 6 Выход: 5 8 1 6 9 4 7 2 3
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 38

Репутация: -  0  +


И ещё один вариант, похож на предыдущий, немного оптимизирован принцип:
Это для тех, кто не любит ещё и явно указывать условия smile.gif))))
Код
uses crt;
var
 x1,y1,x2,y2,x,y:byte;
 a:array[1..100,1..100] of integer;
 val,dx,dy:integer;
 n:byte;
begin
 clrscr;
 write('Введите N:');
 readln(n);
 x1:=1;
 y1:=1;
 x2:=n;
 y2:=n;
 val:=1;
 x:=1;
 y:=1;
 repeat
   a[x,y]:=val;
   dx:=byte((y=y1)and(x<>x2))-byte((y=y2)and(x<>x1));
   dy:=byte((x=x2)and(y<>y2))-byte((x=x1)and(y<>y1));
   inc(x1,byte((dx=0)and(y=y1)and(val<>n)));
   dec(x2,byte((dx=0)and(y=y2)));
   inc(y1,byte((dy=0)and(x=x2)));
   dec(y2,byte((dy=0)and(x=x1)and(val<>1)));
   inc(x,dx);
   inc(y,dy);
   inc(val);
 until val>n*n;
 for y:=1 to n do
 begin
   for x:=1 to n do write(a[x,y]:3);
   writeln;
 end;
end.


Добавлено (2.02.03 1:32):

Цитата
Я эти задачки решал на олимпиадах, причём на решение и оформение каждой было всего по 10 минут...

Представляю себе smile.gif)) если бы я решал на олимпиаде, я бы конечно не думал о "изящности" решения smile.gif)))
Прога может и не была бы оптимальной и маленькой, но я постарался бы уложиться в 10 минут, и думаю смог бы.. единственная проблемма у меня всегда была с оформлением. Что у вас под этим словом подразумевалось ?
З.Ы. И что, выиграл ? smile.gif))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 5:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name