C++ Програмирования с использованием последовательных контейнеров библиотеке STL Даны линейные списки A и B, состоящие из целых чисел. описать процедуру которая проверяет входит ли список A в список B

10 Сен 2021 в 19:46
151 +1
0
Ответы
1

Для проверки того, входит ли список A в список B, можно использовать следующую процедуру в языке C++ с использованием контейнеров библиотеки STL:

#include <iostream>
#include <list>
#include <algorithm>
bool checkListInclusion(std::list<int> A, std::list<int> B) {
// Проверяем длины списков A и B
if (A.size() > B.size()) {
return false;
}
// Проходим по списку B и ищем подпоследовательность A
for (auto it = B.begin(); it != B.end(); ++it) {
if (std::equal(A.begin(), A.end(), it)) {
return true;
}
}
// Если подпоследовательность не найдена, возвращаем false
return false;
}
int main() {
std::list<int> A = {1, 2, 3};
std::list<int> B = {5, 1, 2, 3, 4, 5};
if (checkListInclusion(A, B)) {
std::cout << "Список A входит в список B" << std::endl;
} else {
std::cout << "Список A не входит в список B" << std::endl;
}
return 0;
}

Этот код сначала сравнивает длины списков A и B, и если длина списка A больше длины списка B, то возвращается false. Затем происходит поиск подпоследовательности списка A в списке B с помощью функции std::equal(), которая сравнивает элементы списков поэлементно. Если подпоследовательность найдена, то возвращается true, иначе - false.

В функции main() задаются списки A и B, после чего вызывается процедура checkListInclusion() для проверки наличия списка A в списке B. Полученный результат выводится на экран.

17 Апр 2024 в 11:44
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир