IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Длиннейшая последовательность, Дана последовательность. Найди длину длиннейшей растущей подпоследоват
Kolyancz
сообщение 5.11.2008 14:33
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской

Репутация: -  0  +


Задана последовательность чисел N. N<=1000. Найдите длину длиннейшей возрастающей последовательности, входящей в эту последовательность.
Например:
Дана последовательность: 4 6 1 6 9 9 6 1 2
Ответ: 3 (потому что самый длинный участок - это 1 6 9)

Порядок ввода данных: сначала задается кол-во чисел в последовательности, потом числа этой последовательности.
Например:
Ввод:
9
4 6 1 6 9 9 6 1 2
Вывод:
3
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Kolyancz
сообщение 30.11.2008 23:23
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской

Репутация: -  0  +


Получилось вот что:
Код

type TType = integer;
var
         n:integer;
  a: array[1 .. 1000] of integer;

function find_ascend(var arr: array of ttype;
         const n: integer; var max: integer): integer;

  var curr, start: integer;

  function check_max(i: integer): integer;
    begin
      if max < curr then
        begin
          max := curr;
          check_max := i - curr + byte(i = pred(n))
        end
      else check_max := start
    end;

  var
    i: integer;

  begin
    max := 0; curr := 1;
    start := 1;

    for i := 1 to pred(n) do
      begin
        if arr[i - 1] < arr[i] then
          inc(curr)
        else
          begin
            start := check_max(i);
            curr := 1
          end;
      end;
    start := check_max(i);
    find_ascend := start
end;


var i,_start, _max: integer;
begin
readln(n);
for i:=1 to n do
readln (a[i]);
writeln(a:n);
  _start := find_ascend(a, n, _max);
  writeln(_max) ;

end.


Счетает все отлично, вот только есть одна загвоздка. Нужно сделать ввод чисел через пробел, а не enterом. Вопрос, как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 22:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"