C/C++

Объясните, пожалуйста, смысл задачи на C++

Даны 2 массива a и b одинакового размера N. Найти max(a[i]-b[i]), 0<=i

Для двух массивов одинаковой длины найти максимум разности элементов с одинаковым индексом.
Сергей Надыршин
Сергей Надыршин
38 458
Лучший ответ
Алексей Служивый Спасибо большое)
#include <iostream>
#include <random>
using namespace std;
int main() {
system("chcp 1251 > nul");
cout << "Введите N: ";
unsigned n;
cin >> n;
cout << "Массив A: ";
auto a = new int[n];
for (auto i = 0U; i < n; ++i) cin >> a[i];
cout << "Массив B: ";
auto b = new int[n];
for (auto i = 0U; i < n; ++i) cin >> b[i];
auto max = a[0] - b[0];
for (auto i = 1U; i < n; ++i) {
auto sub = a[i] - b[i];
if (max < sub) max = sub;
}
cout << "Максимум: " << max << '\n';
cout << "Номер студента в группе: ";
int k;
cin >> k;
uniform_int_distribution<> uid(0, 20 * k);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < n; ++i) a[i] = uid(gen);
cout << "Массив A: ";
for (auto i = 0U; i < n; ++i) cout << a[i] << ' ';
puts("");
for (auto i = 0U; i < n; ++i) b[i] = uid(gen);
cout << "Массив B: ";
for (auto i = 0U; i < n; ++i) cout << b[i] << ' ';
puts("");
max = a[0] - b[0];
for (auto i = 1U; i < n; ++i) {
auto sub = a[i] - b[i];
if (max < sub) max = sub;
}
cout << "Максимум: " << max << '\n';
delete[] a;
delete[] b;
system("pause > nul");
}
Олег Громаков
Олег Громаков
88 500
На Питоне из этого вот такая штука получится
a, b, d = [5,9,6,7],[3,5,6,1],[]
c = a + b
for i in range(len(c) // 2):d += [c[i] - c[i + len(c) // 2]]
print(max(d))
Кот Бегемот
Кот Бегемот
59 943
Сначала надо инициировать переменную max значением разности a[0]-b[0]. Потом в цикле по i от 1 до N-1 включительно проверить нет ли там ещё больших разностей:
max = a[0] - b[0];
for (i = 1; i < N; i++) { c = a[i] - b[i];
if (c > max) max = c; }