Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
25 / 25 / 28
Регистрация: 20.03.2011
Сообщений: 150
1

Фаланга

24.01.2012, 20:08. Показов 1370. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Великий полководец Сандро перед крупным сражением решил разработать боевое построение. В войске Сандро N^2 воинов, для каждого воина известна его сила - целое число от 1 до N^2. Силы всех воинов различны. После недолгих раздумий Сандро решил построить воинов в фалангу - N рядов по N воинов в каждом.
Во-первых, Сандро хочет сохранить жизни самых сильных воинов, поэтому, если воин не стоит в последнем ряду, то его сосед сзади должен быть сильнее его. Во-вторых, Сандро знает, что основные силы соперника сосредоточены на левом фланге атаки, поэтому если у воина есть сосед справа, то этот сосед должен быть сильнее его. Наконец, Сандро хочет скрыть истинную силу своего войска до начала сражения, поэтому сумма сил воинов, стоящих по периметру фаланги, должна быть минимально возможной.
В единственной строке записано натуральное число N(1<=N<=100).
Выведите план фаланги - N строк по N чисел в каждой. Строки должны соответствовать рядам фаланги. j-е число в i-й строке должно быть равно силе воина , стоящего j-м слева в i-м с начала ряде. Если возможных ответов несколько, выведите любой.
Пример:
Вход:
3
Выход:
1 2 4
3 6 8
5 7 9
0
Лучшие ответы (1)
Платежеспособный зверь
8926 / 4354 / 1642
Регистрация: 28.10.2009
Сообщений: 11,568
25.01.2012, 00:45 2
Лучший ответ Сообщение было отмечено qwertyo как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var
a:array[1..100,1..100]of integer;
i,j,n,k,m:integer;
begin
readln(n);
for i:=1 to n do
for j:=1 to n do
if a[i,j]=0 then
  if i<=j then
    for k:=j to n do
      begin
      inc(m);
      a[i,k]:=m;
      end
  else
    for k:=i to n do
      begin
      inc(m);
      a[k,j]:=m;
      end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
end.
0
25.01.2012, 00:45
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru