Вот текстовый файл: 1000 строк по 33 цифры, разделённых пробелами. Ваша задача - сосчитать, сколько в файле строк, в которых можно найти повторяющуюся комбинацию из 4 цифр.
Пример: в строке 6 8 7 9 0 4 5 6 7 9 0 4 8 8 2 1 такая комбинация есть, а вот в 5 4 8 7 9 3 7 7 7 7 7 4 0 0 1 повторяющихся комбинаций, не накладывающися друг на друга, нет.
{Free Pascal Compiler version 3.0.4+dfsg-23 [2019/11/25] for x86_64}
{Copyright (c) 1993-2017 by Florian Klaempfl and others}
{Target OS: Linux for x86-64}
program test;
Uses Math;
const N = 15;
var
A : array[1..N] of integer;
i, mx, k : integer;
begin
Randomize;
{Генерация и печать массива}
for i := 1 to N do begin
A[i] := Random(50);
write(A[i], ' ');
if A[i] mod 2 = 1 then mx := A[i]
end;
writeln;
for i := 1 to N do
if A[i] mod 2 = 1 then
if A[i] < mx then begin
mx := A[i];
k := i
end;
writeln('Число - ', mx, ', позиция - ', k);
end.
Результат выполнения программы:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int x, y;
cin >> x >> y;
vector<vector<int> > t(x, vector<int> (y));
for (int i = 0; i < x; ++i){
for (int j = 0; j < y; ++j){
int mark;
cin >> mark;
t[i][j] = mark;
}
}
for (int i = 1; i < y; ++i){
t[0][i] += t[0][i - 1];
}
for (int i = 1; i < x; ++i){
t[i][0] += t[i - 1][0];
}
for (int i = 1; i < x; ++i){
for (int j = 1; j < y; ++j){
t[i][j] += min(t[i - 1][j], t[i][j - 1]);
}
}
cout << t[x - 1][y - 1] << endl;
}
Объяснение: