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

Определение возможности сортировки массива удалением одного элемента - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Исполнение функции-члена в отдельном потоке http://www.cyberforum.ru/cpp-beginners/thread1773562.html
Здравствуйте, форум! Вот такой вот пример: Имеется класс, в котором есть 3 перегрузки одной функции. class A { public: void func1();
C++ Обработка записей содержащих структуры "Студент" Задание для самостоятельного выполнения Составить программу, обеспечивающую формирование данных из задания 5 в виде списка. Реализовать следующие операции работы со списком в виде меню: Меню: 1.Добавление записи (подменю: 1.1. в начало списка, 1.2.в конец списка, 1.3.после первой записи, удовлетворяющей некоторому условию (придумать самостоятельно)) 2.Удаление записи (по значению текстового... http://www.cyberforum.ru/cpp-beginners/thread1773559.html
Обработка структур AER0FL0T C++
Описать структуру с именем AER0FL0T, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета. •Вывести номера рейсов и типов самолетов,вылетающих в пункт назначения ,название которого совпало и с названием введенным с клавиатуры • если таких рейсов нет, вывести соответствующее сообщение).
Visual Studio Не получается собрать исходный код
привет. я использую Microsoft Visual C++ 2010 Express. я хочу разогнать эмулятор nestopia. но у меня не получается построить эмулятор из исходного кода (построение - построить решение). в сам код я пока что не вносил никаких изменений, он просто не собирается у меня на компе. поначалу при сборке было очень много ошибок. я спросил совета у знакомого, он сказал поставить Microsoft DirectX SDK...
C++ Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии http://www.cyberforum.ru/cpp-beginners/thread1773523.html
Дана квадратная матрица порядка . Зеркально отразить ее элементы относительно горизонтальной оси симметрии матрицы.
C++ Динамически распределяемая память, удаление символов в строке Нужна помощь в написании программы: Удаление символов Написать функцию, обеспечивающую ввод с клавиатуры строки неограниченной длины без редактирования. Написать функцию, которая удаляет символы, стоящие между двумя определенными символами. Символ вводится пользователем. Примечание: В каждой задаче должна быть реализована проверка на целостность кучи. При работе со строками учитывать символ... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.07.2016, 11:56     Определение возможности сортировки массива удалением одного элемента
Ну, если жалко памяти, то, с учетом
Цитата Сообщение от Babysitter Посмотреть сообщение
удалив не более одного элемента
см. ниже.
Кстати, условие
Цитата Сообщение от Babysitter Посмотреть сообщение
не менее 4 целых чисел
совершенно надуманное, моя программа считает для любой последовательности. (Пустую я принял монотонной.)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//На входе есть не менее 4 целых чисел, нужно определить, можно ли удалив
//не более одного элемента получить невозрастающий или неубывающий массив.
//Может кто-либо реализовать это, или дать описание наиболее быстрого способа?
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <numeric>
///////////////////////////////////////////////////////////////////////////////
T_numbers   make_rand_numbers()
{
    T_numbers   res     { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
    if  (
            rand() % 2
        )
    {
        std::reverse
            (
                res.begin   (),
                res.end     ()
            );
    }//if
 
    int     anomalies_total     =   rand()  %   5;
 
    for( int  i{}; i < anomalies_total; ++i )
    {
        int     rand_ind    =       rand()
 
                                %   (
                                        res.size() - 1
                                    );
 
        std::swap
            (
                res[ rand_ind           ],
                res[ rand_ind   +   1   ]
            );
    }//for
 
    return  {
                res.begin(),
                res.begin()     +   rand()  %   res.size()
            };
}
///////////////////////////////////////////////////////////////////////////////
bool    sequence_is_monotone_except_may_be_one_element( T_numbers    const   &   numbers )
{
    bool    bool_res    =   numbers.size()  <=  2;
 
    if( !bool_res )
    {
        int     count_pos{};
        int     count_neg{};
 
        for( size_t  i{1}; i < numbers.size(); ++i )
        {
            auto    diff    =       numbers[i]
                                -   numbers[i - 1];
 
            if( !diff )
            {
                continue;
            }
 
            diff    >   0
                ?   ++count_pos
                :   ++count_neg;
 
            bool_res    =       std::min    (
                                                count_pos,
                                                count_neg
                                            )
                            <=  1;
 
            if( !bool_res )
            {
                return  bool_res;
            }
        }//for
    }//if
 
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    srand(unsigned(time(0)));
 
    for(;;)
    {
        auto    numbers     =   make_rand_numbers();
 
        std::copy
            (
                numbers.begin               (),
                numbers.end                 (),
                std::ostream_iterator<int>  ( std::cout,    "\t" )
            );
 
        std::cout   <<  std::boolalpha
                    <<  sequence_is_monotone_except_may_be_one_element( numbers )
                    <<  std::endl;
 
        system("pause");
    }//for
}
 
Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru