Даны два целочисленных массива Х [1:n] и Y[1:k]. Можно ли в первом из них выбрать такие k идущих подряд элементов X[i+1], X[i+2], …, X[i+k], чтобы X[i+1]=Y[1], X[i+2]=Y[2], …, X[i+k]=Y[k]? Написать программу, которая решает эту задачу и печатает ответ ДА или НЕТ.(Паскаль)
program FindSubarray; var X, Y: array[1..100] of integer; n, k, i, j: integer; found: boolean;
begin found := false;
// Вводим массив X write('Введите размер массива X: '); readln(n); writeln('Введите элементы массива X:'); for i := 1 to n do read(X[i]);
// Вводим массив Y write('Введите размер массива Y: '); readln(k); writeln('Введите элементы массива Y:'); for i := 1 to k do read(Y[i]);
// Проверяем, можно ли найти подмассив Y в массиве X for i := 1 to n - k + 1 do begin if X[i] = Y[1] then begin found := true; for j := 2 to k do begin if X[i+j-1] <> Y[j] then begin found := false; break; end; end; end; if found then break; end;
// Выводим ответ if found then writeln('ДА') else writeln('НЕТ'); end.
program FindSubarray;
var
X, Y: array[1..100] of integer;
n, k, i, j: integer;
found: boolean;
begin
found := false;
// Вводим массив X
write('Введите размер массива X: ');
readln(n);
writeln('Введите элементы массива X:');
for i := 1 to n do
read(X[i]);
// Вводим массив Y
write('Введите размер массива Y: ');
readln(k);
writeln('Введите элементы массива Y:');
for i := 1 to k do
read(Y[i]);
// Проверяем, можно ли найти подмассив Y в массиве X
for i := 1 to n - k + 1 do
begin
if X[i] = Y[1] then
begin
found := true;
for j := 2 to k do
begin
if X[i+j-1] <> Y[j] then
begin
found := false;
break;
end;
end;
end;
if found then
break;
end;
// Выводим ответ
if found then
writeln('ДА')
else
writeln('НЕТ');
end.