Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
romalikons
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 77
1

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

22.12.2015, 23:25. Просмотров 1034. Ответов 2
Метки нет (Все метки)

Задание :
В массиве целых чисел найти и удалить группу максимальной длины, элементы которой представляют собой монотонно возрастающую последовательность.
Мои наброски :
C++ (Qt)
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
int main() {
    cout << "Count elements of array : ";
    int n;
    cin >> n;
    int *arr = new int [n];
    int *len = new int [n];
 
    for(int i=0;i<n;i++)
        len[i]=0;
        for (int i=0;i<n;i++){
        cout <<"Enter ["<<i<<"] element :";
        cin>>arr[i];
    }
 
        int tmp_len = 0;
        for (int i=0;i<n-1;i++){
            if(arr[i]<arr[i+1]){
                tmp_len++;
                len[i]==tmp_len;
                       }
            else tmp_len=0;
        }
 
        int max=len[0];
        for (int i=1; i<n; i++){
             if (len[i]>max) max=len[i];
        }
Моя задумка :
1. Считать массив с клавиатуры
2. Покуда предыдущий элемент меньше последующего счетчик++
3. Сохранить значение счетчика в массив len[n]
4. Если предыдущий элемент больше последующего счетчик=0
5. Из массива len[n] найти наибольшее значение - это и будет макс. длина последовательности

Может можно как-то проще , буду благодарен за помощь , если можно , с кодом.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2015, 23:25
Ответы с готовыми решениями:

Найти в файле целых чисел группу положительных элементов наибольшей длины
помогите пожалуйста , зарание благодарен !!!Создать двоичный файл и записать в...

В массиве целых чисел найти предпоследнюю группу, состоящую из возрастающей последовательности чисел
Товарищи, очень нужна ваша помощь

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

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

В массиве целых чисел найти предпоследнюю группу, состоящую из возрастаю- щей последовательности цифр
1 В массиве целых чисел найти предпоследнюю группу, состоящую из возрастаю-...

2
foton98
11 / 10 / 12
Регистрация: 20.12.2015
Сообщений: 38
22.12.2015, 23:38 2
Лучший ответ Сообщение было отмечено romalikons как решение

Решение

Добрый день! Ваша программа была мной немного оптимизирована. Вы используете новый массив для записи. Лучше не нужно занимать память лишними данными, если можно решить задачу без массива. Буду рад, если смог помочь!
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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <windows.h>
#define n 10
 
using namespace std;
 
 int main(int argc, char** argv) {
 int i=0, count=0, a[n]; 
 
 for(i=0;i<n;i++) 
 {cout<<"Nomber = ";
        cin>>a[i];
        }
  
 cout<<"Array :";
 for(i=0;i<n;i++) 
 cout<< a[i]<<" "; 
 
 cout<<"\n";
 
 int countMax=0; 
 int j=0;
 
 for(i=0;i<n;i++) {
        int temp=i; 
    if(a[i]<a[i+1]) {
        
        do { if (a[temp+j]<a[temp+j+1]) { count ++; 
        if (count>countMax) {countMax=count;}
          }
        j++;
        }while (a[temp+j]<a[temp+j+1]); }
    if ((a[temp+j]>a[temp+j+1])||(a[temp+j]==a[temp+j+1])) count=0;    
 
 }  
 cout<<"Max :"<<countMax+1<<"\n";
 system("pause"); 
 return 0; 
 }
1
romalikons
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 77
22.12.2015, 23:46  [ТС] 3
foton98, спасибо , так намного лучше , по крайней мере , теперь оно работает ) Подскажите пожалуйста , можно ли узнать номера элементов с которых эта последовательность начинается и заканчивается ? Надо вывести массив без этой наибольшей возрастающей последовательности.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2015, 23:46

Найти отрезок максимальной длины в массиве А
Найти отрезок максимальной длинны в массиве А из К элементов и вывести его на...

Найти в массиве убывающую последовательность максимальной длины
дан целочисленный массив из n элементов. найти в нем убывающую...

Найти первую последовательность максимальной длины в массиве
Делал задачку: ввод одномерного массива из n целых чисел (1&lt;=n&lt;=100); Найти...


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

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

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