Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 0
Регистрация: 28.06.2009
Сообщений: 81
1

Найдите отрезок максимальной длины, в котором первое число равно последнему, второе — предпоследнему

01.10.2009, 22:00. Просмотров 1384. Ответов 2
Метки нет (Все метки)

Задан числовой массив длины N . Найдите отрезок максимальной длины, в котором первое число равно последнему, второе - предпоследнему и так далее.
если подходящих отрезков несколько, выведите первый по порядку.
input.txt
9
5 3 4 7 4 3 6 6 3
output.txt
3 4 7 4 3
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2009, 22:00
Ответы с готовыми решениями:

Найти отрезок массива максимальной длины , в котором первое число равно последнему
дан числовой массив . Найти отрезок массива максимальной длины , в котором первое число равно...

Найти отрезок массива максимальной длины, в котором первое число равно последнему
массивы..

Найти отрезок массива максимальной длины, в котором первое число равно последнему, второе предпоследнему и т.д.
Задан числовой массив A. Найти отрезок массива максимальной длины, в котором первое число равно...

В массиве найти отрезок максимальной длины, в котором первое число равно последнему, второе - предпоследнему и т.д. Напечатать характеристики этого от
Помогите ребят!!!!препод задачи задачи для аттестации,сделал фактически все,кроме этой: "В массиве...

2
Программист 1С
859 / 647 / 187
Регистрация: 03.03.2009
Сообщений: 1,154
01.10.2009, 22:09 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

По сути вам нужно найти палиндром("перевертыш") максимальной длины входящий в ваш массив.
Первое, что приходит в голову, действовать по такому принципу:
набор чисел - 124425

проверяем отрезки начиная с первого элемента(проверяем не является ли отрезок палиндромом)
124425
12442
1244
124
12
далее проверяем отрезки начиная со второго элемента(и так для каждого, пока не наткнёмся на палиндром)
24425
2442 {нашли самый длинный отрезок-палиндром, дальше можно не проверять}
244 {это уже лишнее}
24 {и это тоже}

Хотя, может кто-то подскажет и более оптимальный вариант
...идея я думаю понятна...
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
28
   TempLPiece:=0; {временная длина отрезка}
   LPiece:=0;    {максимальная длина отрезка}
   FirstItem:=0;  {первый эл-т отрезка}
   LastItem:=0;   {последний эл-т отрезка}
   for i:=1 to n-1 do
      for j:=i+1 to n do
         if A[i]=A[j] then
         begin
            TempLPiece:=j-i+1;
            if TempLPiece>LPiece then
            begin
               Found:=True;
               iTemp:=i+1;
               jTemp:=j-1;
               while (jTemp-iTemp>0) and Found do
               begin
                  if A[jTemp]<>A[iTemp] then Found:=False;
                  jTemp:=jTemp-1;
                  iTemp:=iTemp+1;
               end;
               if found then
               begin
                  LPiece:=TempLPiece;
                  FirstItem:=i;
                  LastItem:=j;
               end;
            end;
         end;
дальше соответственно если LPiece = 0, то отрезка нет, а если LPiece > 0, то выводить все эл-ты от A[FirstItem] до A[LastItem]
0
Эксперт С++
7172 / 3230 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
02.10.2009, 12:04 3
IMHO алгоритм не совсем правильный.
Правильный алгоритм такой.
Массив: 124425
Так как нужно найти максимальной длины, то сначала перебираем все варианты длины 6, потом варианты длины 5, потом 4... Палиндром найдется всегда - хотя бы длины 1 или 0
Конкретно для данного массива.
Проверяем длины 6: 124425
Проверяем длины 5: 12442, 24425
Проверяем длины 4: 1244, 2442 (все - нашли).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2009, 12:04

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

Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее
Задание: Задан числовой массив A(M). Найдите отрезок массива, в котором первое число равно...

Найти отрезок массива-палиндром, в котором первое число равно последнему, второе предпоследнему и т.д.
Перевертыши. Дан числовой массив А. Найти отрезок массива максимальной длины, в котором первое...

В массиве найти отрезок максимальной длины, в котором первое число равно последнему
дан массив в массиве а найти отрезок максимальной длины в котором первое число равно последнему...

Числа Люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно сумме двух предыдущих. Состави
Задание Числа Люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.