Мне нужно написать программу, которая узнает, включен ли один из двух векторов в другой. Программа работает именно так.Поиск, если 1 вектор включен во 2-й вектор
1 - Получает m
и n
значения из input.txt
(1-й строки)
2 - изменяют размеры verctorM
и vectorN
к m
и n
, а затем заполняют их с номерами от input.txt
(2-я строки для vectorM
, 3-й строки для vectorN
)
3 - После заполнения, программа должна выяснить, которым один из векторов имеет наименьшее количество «символов», сравнивая n
и m
4 - Программа получает первый «характер» «маленького» вектора и начать сравнивать его с «символами» из «большого» вектора()
5 - Когда statemant vectorN[i] = vectorM[0]
правильно, то программа сравнивает следующие «символы», если каждый «символ» «малого» вектора находится в «большом» векторе, выход программы 1
, если не по-прежнему сравнивается с 1-м «символом» вектора «smal», если «маленький» вектор не входит в «большой» вектор, программа выводит 0
Edit - номера должны быть в том же порядке, как написано в input.txt
Вот код, который я закончил с
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int main() {
int m;
int n;
bool y = false;
vector<int> vectorM;
vector<int> vectorN;
ifstream file1;
file1.open("input.txt");
file1 >> m;
file1 >> n;
vectorM.resize(m);
vectorN.resize(n);
for (int i = 0; i < m; i++){
file1 >> vectorM[i];
}
for (int i = 0; i < n; i++){
file1 >> vectorN[i];
}
//this is the part that I need help with
ofstream file2;
file2.open("output.txt");
if (y == false)
file2 << 0;
else
file2 << 1;
}
Что ЭФФЕКТИВНЫЙ способ сравнить «символы» ??
Например, если в input.txt
4 3
1 2 3 2
1 2 3
выходы программы 1
, потому что 1 2 3 в 1 2 3 2, но если
2 3
1 2
2 3 1
выходы программы 0
Алгоритм, описанный в задании, неверен. Векторы могут иметь дубликаты. Рассмотрим, например, два вектора. Один из них - {1, 2, 3, 4}, а другой - {1, 1, 1}. Описанный подход дает результат 1, хотя наименьший вектор не входит в самый большой вектор. –
, когда инструкция верна, программа сравнивает следующий символ, в вашем примере, когда 'V1' является' {1,2,3,4} 'и' V2' является '{1,1,1}', программа сравнивает 'V1 [i]' с 'V2 [0]', когда оператор корректен, программа сравнивает 'V1 [i + 1]' с 'V2 [1]', когда оператор неверен, программа начинает находить другую 'i' –
Ну просто сделайте небольшие изменения V1 {2, 3, 1, 4} и V1 {1, 1, 1}. И как работают петли? –