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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Исполнение функции-члена в отдельном потоке http://www.cyberforum.ru/cpp-beginners/thread1773562.html
Здравствуйте, форум! Вот такой вот пример: Имеется класс, в котором есть 3 перегрузки одной функции. class A { public: void func1();
C++ Обработка записей содержащих структуры "Студент" Задание для самостоятельного выполнения Составить программу, обеспечивающую формирование данных из задания 5 в виде списка. Реализовать следующие операции работы со списком в виде меню: Меню:... http://www.cyberforum.ru/cpp-beginners/thread1773559.html
Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии C++
Дана квадратная матрица порядка . Зеркально отразить ее элементы относительно горизонтальной оси симметрии матрицы.
Динамически распределяемая память, удаление символов в строке C++
Нужна помощь в написании программы: Удаление символов Написать функцию, обеспечивающую ввод с клавиатуры строки неограниченной длины без редактирования. Написать функцию, которая удаляет символы,...
C++ Напечатать все слова последовательности, предварительно преобразовав каждое из них по правилу http://www.cyberforum.ru/cpp-beginners/thread1773508.html
Нужна помощь в написании программы: Дана последовательность, содержащая до 5 слов, в каждом из которых до 5 строчных латинских букв; между соседними словами — не менее одного пробела, за последним...
C++ Как нарисовать фигуру и двигать ее мышью? Как нарисовать геометрическую фигуру (треугольник, квадрат, многоугольник) в окне? И как сделать так чтобы они двигались мышью? подробнее

Показать сообщение отдельно
notAll
418 / 139 / 30
Регистрация: 27.05.2016
Сообщений: 364
Завершенные тесты: 2
06.07.2016, 17:35
Как то так:
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
#include <iostream>
#include <functional>
#include <iterator>
#include <algorithm>
#include <vector>
#include <cassert>
 
template <typename It>
bool check(It first, It last)
{
    auto length = std::distance(first, last);
    assert(length >= 4);
 
    using value_type = typename std::iterator_traits<It>::value_type;
    auto final_check = [](auto f, auto l) { return std::is_sorted(f, l) ||
                std::is_sorted(f, l, std::greater<value_type>());
    };
 
    if (final_check(first, last)) return true;
    else
    {
        for (int i = 0; i < length; ++i)
        {
            std::vector<value_type> v{first, last};
            v.erase(v.begin() + i);
            if (final_check(v.begin(), v.end()))
                return true;
        }
    }
    return false;
}
 
int main()
{
    int arr[] = {1, 2, 3, 4, 0, 5};
    std::cout << std::boolalpha;
    std::cout << check(std::begin(arr), std::end(arr));
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru