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

> ВНИМАНИЕ!

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

> Тест на логику (олимпиадные задачи)
___ALex___
сообщение 12.01.2003 17:03
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Some1
сообщение 2.02.2003 1:30
Сообщение #2


Новичок
*

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

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


А вот ещё интересное решение спирали:
Для тех, кто не любит циклы for :)))))
Код
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;
 dx:=1;
 dy:=0;
 x:=1;
 y:=1;
 repeat
   a[x,y]:=val;
   inc(val);
   if not(x+dx in [x1..x2]) then
   begin
     dx:=0;
     dy:=byte(x=x2)-byte(x=x1);
     dec(x2,byte(x=x1));
     inc(x1,byte((x=x2)and(x<>n)));
   end;
   if not(y+dy in [y1..y2]) then
   begin
     dy:=0;
     dx:=byte(y=y1)-byte(y=y2);
     dec(y2,byte(y=y1));
     inc(y1,byte(y=y2));
   end;
   x:=x+dx;
   y:=y+dy;
 until (x1>=x2)and(y1>=y2);
 for y:=1 to n do
 begin
   for x:=1 to n do write(a[x,y]:3);
   writeln;
 end;
end.

Получилось не очень компактно, но я думаю, как это оптимизировать :)
тю.. чё это у вас с тегом code?.. чего он пробелы убивает (если их много)? А вот когда я отредактировал (ну вписал это) то всё встало на свои места.. глюкисы.. :<
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 20.07.2025 7:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"