Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Ole4kaa
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 44
#1

Составить программу нахождения самой длинной невозрастающей подпоследовательности данной последоват

07.03.2013, 17:41. Просмотров 554. Ответов 4
Метки нет (Все метки)

Задана последовательность из N вещественных чисел. Составить программу нахождения самой длинной невозрастающей подпоследовательности данной последовательности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2013, 17:41
Ответы с готовыми решениями:

Определить количество чисел в наиболее длинной подпоследовательности
3)Дана последовательность из 100 целых чисел. Определить количество чисел в...

составить программу нахождения периметра треугольника по заданным координатам его вершин,используя подпрограмму нахождения растояния между двумя точк.
составить программу для нахождения периметра треугольника по заданным...

Поиск самой длинной последовательности
В массиве А состоящем из целых чисел, найти самую длинную последовательность...

Поиск самой длинной возрастающей последовательности в файле
Добрый день. Ниже представлен код программы, который позволяет записывать в...

Составить программу вывода самой большой цифры в записи заданного числа
Составить программы в Pascale 1 задача. Найти сумму всех чисел в строке. 2...

4
Puporev
Модератор
54407 / 41979 / 28997
Регистрация: 18.05.2008
Сообщений: 98,888
07.03.2013, 18:34 #2
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
uses crt;
const nmax=20;
var a:array[1..nmax] of real;
    n,i,j,k,mx,imx:byte;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива, в том числе не возрастающие участки:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  readln(a[i]);
 end;
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i]:0:1,' ');
writeln;
writeln;
i:=2;mx:=0;imx:=0;
while i<=n do
if a[i]<=a[i-1] then
  begin
   j:=i;k:=1;
   while (j<=n)and(a[j]<=a[j-1]) do
    begin
     j:=j+1;
     k:=k+1;
    end;
   if k>mx then
    begin
     mx:=k;
     imx:=i-1;
    end;
   i:=i+k;
  end
else i:=i+1;
if mx=0 then write('Нет участков не возрастания!')
else
 begin
  writeln('Максимальная последовательность не возрастающих чисел=',mx);
  for i:=imx to imx+mx-1 do
  write(a[i]:0:1,' ');
 end;
readln
end.
2
Ole4kaa
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 44
07.03.2013, 19:32  [ТС] #3
огромное спасибо
0
Ole4kaa
0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 44
20.05.2013, 22:06  [ТС] #4
а можете еще комментарии написать?
0
Puporev
Модератор
54407 / 41979 / 28997
Регистрация: 18.05.2008
Сообщений: 98,888
21.05.2013, 07:59 #5
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
uses crt;
const nmax=20;
var a:array[1..nmax] of real;
    n,i,j,k,mx,imx:byte;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива, в том числе не возрастающие участки:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  readln(a[i]);
 end;
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i]:0:1,' ');
writeln;
writeln;
i:=2; //начнем поиск со 2 элеменнта
mx:=0;//длина макс последовательности
imx:=0;//индекс ее начала
while i<=n do //пока не конец массива
if a[i]<=a[i-1] then//если текущий элемент не больше предыдущего
  begin
   j:=i;k:=1; //начнеи провепять следующие
   while (j<=n)and(a[j]<=a[j-1]) do //пока не конец массива и не возрастают
    begin
     j:=j+1;//идем вперед
     k:=k+1;// и считаем
    end;
   if k>mx then//если больше чем было раньше
    begin
     mx:=k; //это пока макс
     imx:=i-1;//начало на 1 меньще чем начало проверки
    end;
   i:=i+k;//перешагиваем через проверенную последователность
  end
else i:=i+1;//если возрастает, идем дальше
if mx=0 then write('Нет участков не возрастания!')//если все возрасттает
else//если есть, вывыдим длину и элементы
 begin
  writeln('Максимальная последовательность не возрастающих чисел=',mx);
  for i:=imx to imx+mx-1 do
  write(a[i]:0:1,' ');
 end;
readln
end.
0
21.05.2013, 07:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 07:59

В тексте определить длину самой длинной группы цифр
Пусть дан текст каждый символ которого может быть латинской буквой,цифрой или...

Определить, сколько букв в самой длинной фамилии списка
Что мне надо исправить в этом коде.Причина в том что какое количество я вожу...

Определите длину самой длинной группы цифр (цикл while)
Пусть дан текст каждый символ которого может быть латинской буквой,цифрой или...


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

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

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