Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
#1

Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию - C++

12.01.2013, 02:05. Просмотров 2492. Ответов 40
Метки нет (Все метки)

Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию.
на языке С++, через цикл for, самым легким способом, я только начинаю учить язык
пожалуйста..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 02:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию (C++):

Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию - C++
Объясните пожалуйста как можно подробнее,как работает эта программа?(желательно все циклы и строки) #include <iostream> using...

Вычеркнуть минимальное количество чисел, чтобы оставшиеся шли в порядке возрастания (дин. программирование) - C++
Написать программу, которая использует метод динамического программирования. Даны N целых чисел X1,X2, . . . ,XN (1 <= N <= 10000, 1 <=...

Удалить из массива минимальное количество элементов, чтобы массив стал упорядочен по возрастанию - C++
Всем добрый день Задача Дан массив чисел, необходимо удалить из данного массива минимальное количество элементов, чтобы массив стал...

Требуется вычеркнуть минимально возможное количество чисел так, чтобы оставшиеся числа шли в порядке возрастания - C++
27. Дана последовательность из N целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть минимально возможное количество чисел...

Удалить элементы в массиве так, чтобы оставшиеся образовывали возрастающую последовательность - C++
Удалить в заданном массиве действительных чисел «лишние» (кроме первого) элементы так, чтобы оставшиеся образовывали возрастающую...

Сортировка массива вставкой, чтобы четные числа шли по возрастанию, а нечетные по убыванию - C++
Всем привет! Есть задача отсортировать массив таким образом, чтобы четные числа шли в нем по возрастанию, а нечетные по убыванию. Числа...

40
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
12.01.2013, 05:06 #31
Fareiro,

VlaDdislav
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 9

Добавлено через 44 секунды
удаленные заменить "0"
0
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 132
12.01.2013, 05:09 #32
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 9
Но нельзя и исключать последовательность: 1 2 3 4 5 9
согласны?
0
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
12.01.2013, 05:12 #33
Fareiro, Согласен,но в данном случаи,по заданию результат такой,каким он должен быть по заданию.
0
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 132
12.01.2013, 05:16 #34
Нет, не верно. По заданию, нужно удалить минимальное число элементов...

В массиве 1 2 5 6 3 4 4 5 9
Есть 2 подмассива:
1 2 3 4 5 9
1 2 5 6 9
Для первого нужно удалить: 3 элемента
Для второго: 4
Следовательно первый вариант правильный, а ваш выдает второй, что уже не соответствует условию)

Я вас убедил?)
0
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
12.01.2013, 05:36 #35
Fareiro, Я уже писал,выполнил так как было написано в задание . Придет тс будим,уточнять.

Не по теме:

нужно удалить минимальное число элементов звучит как то,не корректно.



Добавлено через 11 минут
Всё у меня верно,если идёт 2 4 3 5 6, то верно будит 2 4 5 6,а не 2 3 4 5 6.Это не сортировка.
0
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 132
12.01.2013, 05:44 #36
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Fareiro, Я уже писал,выполнил так как было написано в задание . Придет тс будим,уточнять.

Не по теме:

нужно удалить минимальное число элементов звучит как то,не корректно.



Добавлено через 11 минут
Всё у меня верно,если идёт 2 4 3 5 6, то верно будит 2 4 5 6,а не 2 3 4 5 6.Это не сортировка.
А где вы увидели у меня сортировку? Или это вы так?))
0
ramybozy
8 / 8 / 0
Регистрация: 01.07.2012
Сообщений: 138
12.01.2013, 05:52 #37
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Не по теме:
нужно удалить минимальное число элементов звучит как то,не корректно.
Считайте, что нужно найти максимальное (по числу элементов) упорядоченное подмножество данного массива с сохранением исходного порядка следования.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.01.2013, 06:08 #38
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
#include <iostream>
using namespace std;
int main()
{
      int a[100][2], max, i, j, N;
      cout<<"N= ";
      cin>>N;
      max=N-1;
      for(i=0; i<N; i++)
      {
          cout<<"["<<i+1<<"]= ";
          cin>>a[i][0];
          a[i][1]=0;
      }
      a[N-1][1]=1;
      for(i=N-2; i>=0; i--)
      {
          a[i][1]=1;
          for(j=i+1; j<N; j++)
              if(a[j][0]>a[i][0] && a[i][1]<a[j][1]+1)
                  a[i][1]=a[j][1]+1;
          if(a[max][1]<a[i][1])
              max=i;
      }
      while(a[max][1]>1)
      {
          cout<<a[max][0]<<" ";
          for(i=max+1; i<N; i++)
              if(a[max][0]<a[i][0] && a[max][1]==a[i][1]+1)
              {
                  max=i;
                  break;
              }
      }
      cout<<a[max][0]<<endl;
      return 0; 
}
0
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
12.01.2013, 08:25 #39
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
#include <iostream>
 
using namespace std;
 
int main(void)
{
    const unsigned array_size = 10;
    unsigned MyArray[array_size];
    cout<<"Enter array...\n";
    for(unsigned i=0; i<array_size; i++){
        cout<<" value "<<i+1<<"/"<<array_size<<" : ";
        cin>>MyArray[i];
    };
 
    // посмотрим
    cout<<"\n Array before : ";
    for(unsigned i=0; i<array_size-1; i++) cout<<MyArray[i]<<", ";
    cout<<MyArray[array_size-1]<<".\n";
 
    int Badness, BadnessMax;
    int IndexOfBadElement = 0;  // будем считать, что первый элемент не подходит
 
    while(IndexOfBadElement >= 0){
 
        // вычислим "негодность" каждого элемента и индекс главного "негодяя"
        IndexOfBadElement = -1;
        BadnessMax = 0;
 
        // чем больше количество элементов до него, которые больше него и после него, которые меньше, тем хуже
        for(unsigned i=0; i<array_size; i++){
            Badness = 0;
            if(MyArray[i] != 0){
                for(unsigned i1=0; i1<array_size; i1++)
                    if(MyArray[i1] != 0 && ((i1 < i && MyArray[i1] > MyArray[i]) || (i1 > i && MyArray[i1] < MyArray[i])))
                        Badness++;
            }
            if(Badness > BadnessMax){
                BadnessMax = Badness;
                IndexOfBadElement = i;
            }
        }
 
        if(IndexOfBadElement >= 0){
            // обнуляем самый непотребный елемент
            MyArray[IndexOfBadElement] = 0;
        }
    }
 
    // посмотрим после обработки
    cout<<"\n Array after  : ";
    for(unsigned i=0; i<array_size-1; i++) cout<<MyArray[i]<<", ";
    cout<<MyArray[array_size-1]<<".\n";
 
    system("pause");
    return 0;
}
Добавлено через 58 секунд
вот, надеюсь прокомментировал понятно, вроде работает

Добавлено через 15 минут
вот то же самое, только размер массива можно любой задать и одинаковые элементы убираются
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
#include <iostream>
using namespace std;
int main(void)
{
    unsigned array_size;
    cout<<"Enter array size :";
    cin>>array_size;
    if(array_size <= 0) return 0;
 
    unsigned *MyArray = new unsigned int[array_size];
 
    cout<<"Enter array values...\n";
    for(unsigned i=0; i<array_size; i++){
        cout<<" value "<<i+1<<"/"<<array_size<<" : ";
        cin>>MyArray[i];
    };
 
    // посмотрим
    cout<<"\n Array before : ";
    for(unsigned i=0; i<array_size-1; i++) cout<<MyArray[i]<<", ";
    cout<<MyArray[array_size-1]<<".\n";
 
    int Badness, BadnessMax;
    int IndexOfBadElement = 0;  // будем считать, что первый элемент не подходит
 
    while(IndexOfBadElement >= 0){
 
        // вычислим "негодность" каждого элемента и индекс главного "негодяя"
        IndexOfBadElement = -1;
        BadnessMax = 0;
 
        // чем больше количество элементов до него, которые больше или равны него и после него, которые меньше или равны, тем хуже
        for(unsigned i=0; i<array_size; i++){
            Badness = 0;
            if(MyArray[i] != 0){
                for(unsigned i1=0; i1<array_size; i1++)
                    if(MyArray[i1] != 0 && ((i1 < i && MyArray[i1] >= MyArray[i]) || (i1 > i && MyArray[i1] <= MyArray[i])))
                        Badness++;
            }
            if(Badness > BadnessMax){
                BadnessMax = Badness;
                IndexOfBadElement = i;
            }
        }
 
        if(IndexOfBadElement >= 0){
            // обнуляем самый непотребный елемент
            MyArray[IndexOfBadElement] = 0;
        }
    }
 
    // посмотрим после обработки
    cout<<"\n Array after  : ";
    for(unsigned i=0; i<array_size-1; i++) cout<<MyArray[i]<<", ";
    cout<<MyArray[array_size-1]<<".\n";
 
    system("pause");
    delete[] MyArray;
    return 0;
}
0
FlaYnoSt
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 18
12.01.2013, 08:34 #40
Цитата Сообщение от VlaDdislav Посмотреть сообщение
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 9

Добавлено через 44 секунды
удаленные заменить "0"

так ты удаляешь 4 числа, удалив 5 6 и 4 получишь: 1 2 3 4 5 9

Не по теме:

мимо проходил

0
iifat
2253 / 1409 / 109
Регистрация: 05.06.2011
Сообщений: 3,872
12.01.2013, 16:27 #41
К сожалению, правила запрещают посылать в гугл. Поэтому я тебе советую: ни в коем разе не гугли по строке "самая длинная возрастающая цепочка"! Иначе на первой же странице ты найдёшь Наибольшая возрастающая подпоследовательность (НВП, Longest Increasing Subsequence, LIS), где описываются два варианта алгоритмов.
На всякий случай: вычеркнув минимальное число элементов, мы получис как раз самую длинную возрастающую последовательность.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 16:27
Привет! Вот еще темы с ответами:

Удалить из массива число, у которого наибольшая сумма цифр и отсортировать оставшиеся элементы - C++
Задан массив целых чисел х. Удалить из него число,у которого наибольшая сумма цифр. Поменять местами 2 наибольших элемента в массиве....

Переставить цифры числа так, чтобы получилось минимальное возможное число - C++
Дано натуральное число n. Необходимо переставить его цифры таким образом, чтобы получилось минимальное возможное число без ведущих нулей.

В каждом столбце обнулите минимальное количество элементов так, чтобы сумма элементов столбца не превышала заданную - C++
Помогите решить при помощи функций.плиссзО_о Пусть дана матрица А(n x m), состоящая из натуральных чисел. В каждом столбце обнулите...

Переставить строки в массиве так, чтоб они шли по возрастанию их сумм - C++
Помогите написать программу Переставить строки в массиве так, чтоб они шли по возрастанию их сумм.


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

Или воспользуйтесь поиском по форуму:
41
Yandex
Объявления
12.01.2013, 16:27
Ответ Создать тему
Опции темы

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