Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 22.12.2016
Сообщений: 14
1

Использовать рекурсивную функцию и найти подмножество с самой длинной арифм. прогрессией

23.05.2017, 16:07. Показов 848. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет
Задание такое : Дан массив. Найти подмножество, которое образует самую длин-
ную арифметическую прогрессию.
Я так понимаю, предполагается использование рекурсивной функции.
Кое-что сделал
Кликните здесь для просмотра всего текста
C++
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "stdafx.h"
 
#include <iostream>
 
#include <math.h>
 
#include <iomanip>
 
#include <ctime>
 
#include <locale.h>
 
#include <conio.h>
 
using namespace std;
 
int main()
 
{
 
    setlocale(LC_ALL, "rus");
 
 
    int N = 8, len_ar[100], ans_ar = 1, //Пилим данные. Длина строки, массив
 
    int *a;
 
    a = new int[8];
 
    len_ar[1] = 2;
 
    /*Вводим изначальный массив из N элементов*/
 
    for (int i = 0; i < N; i++) { cin >> a[i]; }
 
    cout << "Изначальный массив\n"; /*Выводим изначально введенный массив для наглядности*/
 
    for (int i = 0; i < N; i++) { cout << a[i] << " "; }
 
    for (i = 2; i<N; ++i)
 
    {
 
        if (a[i] - a[i - 1] == a[i - 1] - a[i - 2]) //Обсчитываем прогрессию
 
            len_ar[i] = len_ar[i - 1] + 1;
 
        else len_ar[i] = 2;
 
        //Ищем границы для вывода подмножества
 
        if (len_ar[i]>len_ar[ans_ar])
 
            ans_ar = i;
 
    }
 
    /*Вывод*/
 
    cout << "Подмножество с наибольшей арифметической прогрессией: ";
 
    for (i = ans_ar - len_ar[ans_ar] + 1; i <= ans_ar; ++i)
 
        cout << a[i] << ' ';
 
    cout << "Длина прогрессии : " << len_ar[ans_ar] << endl;
 
    system("PAUSE");
 
    return 0;
 
}

Вопрос в следующем

Как мне это преобразовать в рекурсивную функцию
А в main уже просто вызывать её?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2017, 16:07
Ответы с готовыми решениями:

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

Напишите функцию поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве
Напишите функцию поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве

Написать рекурсивную функцию, которая находит размер самой большой фигуры
В прямоугольной таблице N рядов и M колонок. Каждая клетка или пустая, или закрашенная. Каждая...

Найти длину самой длинной группы
В заданной строке символов, состоящих из букв А и разделенных на группы через пробел, найти длину...

0
23.05.2017, 16:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2017, 16:07
Помогаю со студенческими работами здесь

Найти количество символов в самой длинной строке
Заданы М строк символов, которые вводятся с клавиатуры. Найти количество символов в самой длинной...

Найти размер самой длинной ниспадающей последовательности
В файле состоит из действительных чисел , найти размер самой длинной неспадаючои последовательности...

Найти сумму длин самой длинной и k-й строк
Решить задачу с использованием структуры «текстовый файл» (в файле хранится текст) Найти сумму...

Найти длину самой длинной последовательности единиц
Здравствуйте, по заданию нужно &quot;Ввести целое число N. Найти длину самой длинной последовательности...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru