Форум программистов, компьютерный форум 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, содержащую следующие поля: • название пункта назначения рейса; • номер рейса; • тип самолета. •Вывести номера рейсов и типов самолетов,вылетающих в пункт назначения ,название которого совпало и с названием введенным с клавиатуры • если таких рейсов нет, вывести соответствующее сообщение).
Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии C++
Дана квадратная матрица порядка . Зеркально отразить ее элементы относительно горизонтальной оси симметрии матрицы.
C++ Динамически распределяемая память, удаление символов в строке http://www.cyberforum.ru/cpp-beginners/thread1773513.html
Нужна помощь в написании программы: Удаление символов Написать функцию, обеспечивающую ввод с клавиатуры строки неограниченной длины без редактирования. Написать функцию, которая удаляет символы, стоящие между двумя определенными символами. Символ вводится пользователем. Примечание: В каждой задаче должна быть реализована проверка на целостность кучи. При работе со строками учитывать символ...
C++ Напечатать все слова последовательности, предварительно преобразовав каждое из них по правилу Нужна помощь в написании программы: Дана последовательность, содержащая до 5 слов, в каждом из которых до 5 строчных латинских букв; между соседними словами — не менее одного пробела, за последним словом — точка. Напечатать все слова последовательности, предварительно преобразовав каждое из них по следующему правилу: 1) перенести последнюю букву в начало слова; 2) удалить из слова первую... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
06.07.2016, 08:57     Определение возможности сортировки массива удалением одного элемента
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
//На входе есть не менее 4 целых чисел, нужно определить, можно ли удалив
//не более одного элемента получить невозрастающий или неубывающий массив.
//Может кто-либо реализовать это, или дать описание наиболее быстрого способа?
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <numeric>
#include <deque>
///////////////////////////////////////////////////////////////////////////////
typedef std::deque  < int   >   T_numbers;
///////////////////////////////////////////////////////////////////////////////
T_numbers   make_rand_numbers()
{
    T_numbers   res     { 1, 2, 3, 4, 5, 6, 7 };
 
    if  (
            rand() % 2
        )
    {
        std::reverse
            (
                res.begin   (),
                res.end     ()
            );
    }//if
 
    int     anomalies_total     =   rand()  %   4;
 
    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;
}
///////////////////////////////////////////////////////////////////////////////
bool    sequence_is_monotonic_but_one_element( T_numbers    const   &   numbers )
{
    T_numbers   diff;
 
    std::adjacent_difference
        (
            numbers.begin       (),
            numbers.end         (),
            std::back_inserter  ( diff )
        );
 
    diff.pop_front();
 
    return          std::count_if
                        (
                            diff.begin  (),
                            diff.end    (),
                            []          ( auto  elem )
                            {
                                return  elem    <   0;
                            }
                        )
 
                ==  1
 
            ||      std::count_if
                        (
                            diff.begin  (),
                            diff.end    (),
                            []          ( auto  elem )
                            {
                                return  elem    >   0;
                            }
                        )
 
                ==  1;
}
///////////////////////////////////////////////////////////////////////////////
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_monotonic_but_one_element( numbers )
                    <<  std::endl;
 
        system("pause");
    }//for
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru