Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2010, 21:11   #1
Violleta
 
Регистрация: 08.11.2010
Сообщений: 7
По умолчанию Перевертыши

Помогите пожайлуста с решением задачи в паскале, никак немогу написать

Создать числовой массив A[1..n]. Найти отрезок массива максимальной длины, в котором первое число равно последнему, второе предпоследнему и т.д. Вывести длину этого отрезка и сам отрезок.
Violleta вне форума Ответить с цитированием
Старый 09.11.2010, 00:05   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

что то наподобие такого

Код:
var a:array[1..100] of integer;
    x,y,z,n,max,n1,n2:integer;o:boolean;
begin
n:=15;
//randomize;
//for x:=1 to n do begin
// a[x]:=random(10);
// write (a[x],' ');
//end;
//writeln;
// этот код всего лишь отвечал за рандомное заполнение массива
max:=0;
n1:=1;
n2:=1;
for x:=1 to n-1 do
 for y:=x+1 to n do begin
   o:=true;
  for z:=0 to (y-x) div 2 do
   o:=o and (a[x+z]=a[y-z]);
  if o and (y-x>max) then begin
   n1:=x;
   n2:=y;
   max:=y-x+1;
  end;
 end;
if max>0 then begin
writeln ('max=',max);
for x:=n1 to n2 do write (a[x],' ');
end else
writeln ('таких последовательностей нет');
end.
благодарность - сюда (не забываем писать от кого)

Последний раз редактировалось Stilet; 09.11.2010 в 08:41.
Zer0 вне форума Ответить с цитированием
Старый 09.11.2010, 08:36   #3
Violleta
 
Регистрация: 08.11.2010
Сообщений: 7
По умолчанию

спасибо огромное
Violleta вне форума Ответить с цитированием
Старый 09.11.2010, 10:22   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не знаю, прямо, стоит ли портить такую идиллию

но код не всегда работает...
Цитата:
И увидел он, что это не работает...
попробуйте для такого массива:
Код:
  n := 10;
  for x := 1 to n do
    a[x] := x;

 a[3] := 1;
 a[n-1] := a[n-4];
 a[n-2] := a[n-3];
Цитата:
1 2 1 4 5 6 7 7 6 10
max=3
1 2 1

p.s. Zer0, кстати, Вы же уже не новичок на форуме. Используйте для оформления кода тэг [CODE]...[/СODE] (кнопка с решёточкой #)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.11.2010, 16:07   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

беглый осмотр показал недочет, но на сонную голову могу ошибиться

Код:
  for z:=0 to (y-x) div 2 do
   o:=o and (a[x+z]=a[y-z]);
  if o and (y-x>max) then begin
   n1:=x;
меняем на

Код:
  for z:=1 to (y-x+1) div 2 do
   o:=o and (a[x+z-1]=a[y-z-1]);
  if o and (y-x+1>max) then begin
   n1:=x;
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц