Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88

Найти длину наибольшей возрастающей последовательности

20.02.2012, 17:15. Показов 3011. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность действительных чисел а1, а2,..., аn.
Найти длину наибольшей возрастающей последовательности.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2012, 17:15
Ответы с готовыми решениями:

Вывести на экран длину наибольшей последовательности цифр, идущих подряд
Имеется строка, содержащая буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд.

Вывести на экран длину наибольшей последовательности цифр, идущих подряд.
А вот и она : Имеется строка, содержащая буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр,...

Найти длину наибольшей возрастающей последовательности
Option Explicit Option Base 1 'Дана последовательность действительных чисел а1, а2,..., аn. 'Найти длину наибольшей возрастающей...

4
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.02.2012, 21:07
Цитата Сообщение от Дмитрий291225 Посмотреть сообщение
Найти длину наибольшей возрастающей последовательности.
Это как?
Может - Найти наибольшую длину возрастающей последовательности.

Можно переделать из этого В массиве P(n) найти самую длинную последовательность, которая является арифметической или геометрической прогрессией
0
22 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 88
21.02.2012, 16:15  [ТС]
Вот готовая программа.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function res(A As Variant) As Variant
    Dim i As Long
   
    For i = 1 To UBound(A)
        If A(i) >= A(i + 1) Then Exit For
    Next i
            
   Debug.Print A(i)
End Function
 
Sub shislo()
    Dim A
    A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1, 0, 4, 7, 8, 10, 1)
    If res(Array(1, 2, 6, 11, 3, 2, 5, 1, 1, 0, 4, 7, 8, 10, 1)) Then
    End If
End Sub
Результат выдает 11.

Надо завести две переменных. В первой - хранить наибольшую длину уже найденных последовательностей. Во второй - считать длину текущей последовательности. Как только текущая последовательность закончится - сравнить первую и вторую переменные - найти, которая из них больше и записать на место первой. Перейти к просчёту след. последовательности.

Как это сделать?
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
22.02.2012, 13:35
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
 
Function res(A As Variant) As Variant
    Dim i As Long, k&
    For i = 1 To UBound(A)
        If A(i) > A(i - 1) Then
          k = k + 1
        Else
          If k > res Then res = k
          k = 0
        End If
    Next i
    If k > res Then res = k
    res = res + 1
End Function
 
Sub shislo()
    Dim A
    A = Array(1, 2, 6, 11, 3, 2, 5, 1, 1, 0, 4, 7, 8, 10, 1)
    MsgBox res(A)
End Sub
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
22.02.2012, 16:19
Лучший ответ Сообщение было отмечено как решение

Решение

Сделал без доп. массивов: на позиционировании
Visual Basic
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
Option Explicit
Option Base 1
 
Sub Max_Len_A_Progresi()
 
Dim AR
Dim i As Integer
Dim PosS As Integer 'позиция стартового элемента
Dim PosE As Integer 'позиция конечного элемента
Dim PosSmax As Integer 'Поз. старт. МАКС длины последовательности
Dim PosEmax As Integer ' Поз. конец. МАКС длины последовательности
Dim st As String 'числа в проверяемой последовательности
Dim stMax As String 'числа в найденной макс. длины последовательности
 
AR = Array(1, 2, 6, 11, 3, 2, 5, 1, 1, 0, 4, 7, 8, 10, 1)
 
PosS = 1: PosE = 1
For i = 2 To UBound(AR)
    If AR(i) > AR(i - 1) Then
        PosE = i: st = st + CStr(AR(i)) & ","
        If PosEmax - PosSmax < PosE - PosS Then
            PosSmax = PosS: PosEmax = PosE: stMax = st
        End If
    Else
        PosS = i: PosE = i: st = CStr(AR(i)) & ","
    End If
Next
MsgBox stMax
End Sub
Добавлено через 2 часа 17 минут
Логика получения инфы у Апострофф идентична. За исключением одного, если в конце попадется возрастающее число, я чтоб дважды не повторять IF сместил его перед ELSE, как только второе число больше Тек.длина сравнивается с Макс. Но т.о. код выполняется на 0,01 % дольше.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Function res(A As Variant) As Variant
    Dim i As Long, k&
    For i = 1 To UBound(A)
        If A(i) > A(i - 1) Then
          k = k + 1
          If k > res Then res = k
        Else
          k = 0
        End If
    Next i
    res = res + 1
End Function
И да, Дмитрий291225, в моем коде можно:
1) убрать Option Base 1 и изменить
Visual Basic
1
2
posS=lbound(AR): posE=posS
For i = LBound(AR) + 1 To UBound(AR)
делал на скорую руку.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2012, 16:19
Помогаю со студенческими работами здесь

Динамическое программирование: найти длину наибольшей возрастающей подпоследовательности
1. Дана последовательность, требуется найти длину её наибольшей возрастающей подпоследовательности. Вывести найденную...

Дана последовательность, требуется найти длину наибольшей возрастающей подпоследовательности
Дана последовательность, требуется найти длину наибольшей возрастающей подпоследовательности. Входные данные В первой строке входного...

Найти начало наибольшей возрастающей последовательности
Доброго времени суток. Нужно вернуть указатель на начало наибольшей возрастающей последовательности. ( Например {1,4,1,5,2,3,5,0} Ответом...

Найти индекс первого элемента наибольшей по длине возрастающей последовательности
Одномерный массив от 1 до 100. Найти индекс первого элемента наибольшей по длине возрастающей последовательности .

PIE32. в списке символов найти длину наибольшей последовательности
Здравствуйте. Пролистала весь форум но PIE32 так и не нашла. Безуспешно искала в интернете хоть какую-нибудь литературу по данной...


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

Или воспользуйтесь поиском по форуму:
5
Закрытая тема Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru