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

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

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

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

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

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

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

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

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

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

4
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
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 / 1
Регистрация: 06.03.2013
Сообщений: 44
07.03.2013, 19:32  [ТС] #3
огромное спасибо
0
Ole4kaa
0 / 0 / 1
Регистрация: 06.03.2013
Сообщений: 44
20.05.2013, 22:06  [ТС] #4
а можете еще комментарии написать?
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
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