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

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

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

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

Из массива удалить минимальное число элементов так, чтобы оставшиеся шли по возрастанию
Объясните пожалуйста как можно подробнее,как работает эта программа?(желательно...

Вычеркнуть минимальное количество чисел, чтобы оставшиеся шли в порядке возрастания (дин. программирование)
Написать программу, которая использует метод динамического программирования....

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

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

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

40
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:15 2
Что значит удалить из массива? Массив это последовательность битов, условно пронумерованных группами... Можно только пересоздать массив с новой размерностью, если хочешь свободное удаление каждого его элемента, то лучше посмотреть в сторону двусвязного списка...
1
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
12.01.2013, 02:19  [ТС] 3
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 9

Добавлено через 44 секунды
удаленные заменить "0"
0
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,755
Записей в блоге: 1
12.01.2013, 02:24 4
а что, попроще задачки для изучения языка не мог взять? Полно же книжек! Тут не всё так просто.
Можно сделать цикл, конечно
C++
1
2
for(i=0; i<n-1; i++)
if (a[i]>a[i+1]) remove(i);
Но это решение, ясен пень, не минимальное число элементов удалит.
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:28 5
А так все просто:
C++
1
2
3
4
5
6
7
for(int i = 0; i < <array_size> - 1; i++) {
int position;
if(array[i] >= array[i+1]) {
 position = i;
 здесь создаешь динамический массив, с размерность на один меньше и циклом while копируешь все элементы, кроме [position]
}
}
В итоге на выходе получишь динамический массив с возрастающими числами.

Добавлено через 1 минуту
Код не претендует на изящность и быстродействие, а так же на грамотную выборку чисел для удаления, но с помощью for - это, по-моему, проще всего.
0
ramybozy
8 / 8 / 1
Регистрация: 01.07.2012
Сообщений: 138
12.01.2013, 02:29 6
To Kuzia

Это вообще никакое не решение.
Вот простой контрпример.

100, 3, 2, 101, 102
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:29 7
Цитата Сообщение от VlaDdislav Посмотреть сообщение
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 9

Добавлено через 44 секунды
удаленные заменить "0"
Раньше не мог написать?!
0
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,755
Записей в блоге: 1
12.01.2013, 02:30 8
Цитата Сообщение от contedevel Посмотреть сообщение
А так все просто:
в том то и дело, что не факт, что верно.
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:31 9
Сделай как написали, только в
C++
1
if(....) {array[i] = 0;}
0
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
12.01.2013, 02:33  [ТС] 10
Цитата Сообщение от contedevel Посмотреть сообщение
Раньше не мог написать?!
извени)
сможешь помочь?
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:33 11
Если хочешь, чтобы программа работала корректно, то for лучше не использовать, иначе код будет очень объемный и запутанный.
0
VlaDdislav
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
12.01.2013, 02:36  [ТС] 12
можешь пожалуйста дать код, а то я совсем чтот запарился..

Добавлено через 1 минуту
я ток for и while учил
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:43 13
C++
1
2
3
4
5
for(int i = 0; i < <array_size> - 1; i++) {
if(array[i] >= array[i+1]) {
 array[i] = 0;
}
}
Думаю, для большинства случаев будет корректно выполнятся, хотя честно не могу сейчас точно рассмотреть все случаи - сплю уже

Да, где <array_size> - это нужно размер массива указать любым способом...

Добавлено через 3 минуты
Извини, не пиши этот код, сейчас нормальный выложу...
1
ramybozy
8 / 8 / 1
Регистрация: 01.07.2012
Сообщений: 138
12.01.2013, 02:48 14
Как минимум, тут необходимо найти все промежутки монотонности, но и все равно до решения будет еще далеко.
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:51 15
Числа только положительные или нет?
0
Fareiro
15 / 15 / 11
Регистрация: 06.12.2012
Сообщений: 131
12.01.2013, 02:54 16
Все просто, как уже был дан пример:
Допустим задан следующий массив
1 2 5 6 3 4 4 5 9
по условию задачи в массиве должно остаться
1 2 5 6 0 0 0 0 9

Каждый элемент массива должен быть больше предыдущего, если действие выполняется - идем дальше, а если нет - записываем в эту ячейку 0... Что мудрить то... Если условие правильное конечно

И вариант реализации данного "алгоритма" есть выше.
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 02:59 17
Можно, найти два рядом стоящих подмассива, в которых элементы возрастают, сравнить их размерности и обнулить в наименьшем все элементы, которые больше или меньше первого или последнего элемента наибольшего массива, зависит от позиции слева или справа наибольший. Нули игнорировать в подмассивах. Делать пока размерность подмассива не станет равна массиву, За цикл for забудь, это ужас просто будет...лучше while.

такая программа будет работать корректно, извини, но код довольно большой будет писать не буду, если нужно будет в личку напиши, завтра тогда напишу...
0
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,755
Записей в блоге: 1
12.01.2013, 03:01 18
а почему именно
которые больше или меньше первого или последнего элемента наибольшего массива,
может надо обнулить этот самый наименьший + все которые меньше предпоследнего, и тогда выйдет оптимальнее


0 1 2 3 8 1 2 3 4 5 9 10
0
contedevel
57 / 55 / 13
Регистрация: 07.10.2012
Сообщений: 606
12.01.2013, 03:03 19
Ну, размерность подмассива должна стать равна размерности массива, исключая нулевые элементы естественно)

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а почему именно может надо обнулить этот самый наименьший + все которые меньше предпоследнего, и тогда выйдет оптимальнее


0 1 2 3 8 1 2 3 4 5 9 10
Тогда будет ситуация, когда программа удалит подходящие элементы
0
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,755
Записей в блоге: 1
12.01.2013, 03:09 20
пример 0 1 2 3 8 2 3 4 5 9 10

твоя программа выделит 2 подмассива
0 2 3 8
2 3 4 5 9 10
Рассмотрит, из какого лучше удалить лишние элементы
если из первого, то результат 0 2 2 3 4 5 9 10
если из второго, то результат 0 2 3 8 9 10
и твоя программа выдаст тот, что длиннее 0 2 3 4 5 9 10
верный же вариант 0 1 2 2 3 4 5 9 10
0
12.01.2013, 03:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 03:09

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

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

Нужно быстрой сортировкой отсортировать массив из 20 элементов чтобы первые 10 шли по возрастанию а последние
Нужно при помощи быстрой сортировки отсортировать массив из 20 элементов чтобы...


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

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

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