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

Алгоритм поиска - C++

Восстановить пароль Регистрация
 
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
02.08.2013, 16:47     Алгоритм поиска #1
есть ли в STL алгоритм принимающий упорядоченный интервал и проверяющий, содержит ли данный интервал последовательность из N элементов, соседние элементы отличаются на единицу
ПРимер : 3 5 6 7 9 - содержит 3 элемента отл на единицу 2 3 10 11 12 13 содержит 4 элемента
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 16:47     Алгоритм поиска
Посмотрите здесь:

C++ Алгоритм последовательного поиска
Алгоритм поиска в ширину C++
C++ Матрицы, алгоритм поиска
Алгоритм поиска А* C++
Алгоритм поиска в ширину C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rrrFer
Заблокирован
02.08.2013, 17:15     Алгоритм поиска #2
нет
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
02.08.2013, 17:54     Алгоритм поиска #3
слабо "hello world" без STL написать?
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.08.2013, 18:29     Алгоритм поиска #4
Разве count_if-ом подсчитывать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<int> v{2, 3, 10, 11, 12, 13, 14, 14, 20};
 
    int count = v.front();
    std::cout << std::count_if(v.begin()+1, v.end(), [&count](const int val)->bool
    {
        if (++count == val) return true;
        else {count = val; return false;}
    });
 
    return 0;
}
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
02.08.2013, 18:54  [ТС]     Алгоритм поиска #5
Цитата Сообщение от salam Посмотреть сообщение
слабо "hello world" без STL написать?
причем здесь слабо? я решение нашёл, просто интересно есть ли такое в STL
rrrFer
Заблокирован
02.08.2013, 19:02     Алгоритм поиска #6
DiffEreD, твой код как бэ ваще отношения к задаче не имеет )
твой код вернет последний элемент последовательности (в count), но смотри в задачу.
требуется последовательность ровно из N элементов (т.е.) если если последовательность длин 2 3 7 8 и N = 7 - то ответ должен быть утвердительным

и count_if тут имхо некрасиво вкручен, мало того, что какой то count приходится захватывать, дак еще и этот count хранит черт знает что ))

просто интересно есть ли такое в STL
да в STL не так уж и много алгоритмов есть. Загляни на cplusplus
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
02.08.2013, 19:03  [ТС]     Алгоритм поиска #7
Цитата Сообщение от DiffEreD Посмотреть сообщение
Разве count_if-ом подсчитывать:
поскольку посл отсортирована и не имеет дубликатов(возможно забыл указать) то просто циклически сравниваем col[i] == (col[i+N]-N)
где N требуемая длина искомой последовательности
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2013, 19:41     Алгоритм поиска
Еще ссылки по теме:

C++ Простые алгоритм поиска?
C++ Алгоритм поиска(не находит)
Алгоритм поиска библиотек C++

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

Или воспользуйтесь поиском по форуму:
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
02.08.2013, 19:41     Алгоритм поиска #8
для произвольных последовательностей есть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<int> arr {1, 2, 3, 10, 4};
    std::vector<int> subarr {2, 3, 10};
    if ( std::search(begin(arr), end(arr), begin(subarr), end(subarr)) != end(arr) ) {
        std::cout << "yes\n";
    } else {
        std::cout << "no\n";
    }
    return 0;
}
Yandex
Объявления
02.08.2013, 19:41     Алгоритм поиска
Ответ Создать тему
Опции темы

Текущее время: 12:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru