C/C++

Помогите пожалуйста написать программу!

#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
int main() {
uniform_int_distribution<int> uid(0, 1);
mt19937 gen{ random_device()() };
auto n = 7U, m = 7U;
auto matrix = new int*[n];
for (auto i = 0U; i < n; ++i) {
matrix[i] = new int[m];
for (auto j = 0U; j < m; ++j) {
matrix[i][j] = uid(gen);
cout << setw(3) << matrix[i][j];
}
puts("");
}
int sum_max_row = numeric_limits<int>::min();
int sum_min_col = numeric_limits<int>::max();
size_t max_pos = 0U, min_pos = 0U;
for (auto i = 0U; i < n; ++i) {
int sum_row = 0;
int sum_col = 0;
auto j = 0U;
while (j < m) {
sum_row += matrix[i][j];
sum_col += matrix[j][i];
++j;
}
if (sum_row > sum_max_row) {
sum_max_row = sum_row;
max_pos = i + 1U;
}
if (sum_col < sum_min_col) {
sum_min_col = sum_col;
min_pos = i + 1U;
}
}
cout << "maximum amount string: " << max_pos << '\n';
cout << "minimum amount column: " << min_pos << '\n';
for (auto i = 0U; i < n; ++i) delete[] matrix[i];
delete[] matrix;
}
Алексей Ханимов-Круценко
Алексей Ханимов-Круценко
61 707
Лучший ответ
Андрей Михайлов В свое время, «один проход» считался проходом ленты и не возможно было возвратиться, так тут и прыгать надо считать по факту 2 считывания
sum_row += matrix[i][j];
sum_col += matrix[j][i];
Видел решение кто-то сдал с применением массива минимумов длиной в кол. столбов, но это хоть в один проход из медленной памяти, но массив то все равно занимает место в памяти. Решаема ли эта задача еще как-то?
2 задача главная диагональ тупо i==j тогда побочная i = 6-j
если дан int mas[7][7]; тогда тупо
for(int i=0; i<7; i++)
for(int j=0; j<7; j++)
{
mas[i][j] = (i==j) || (i == 6-j) ? 1 : 0;
}

а вот 1 интересней==извращенней
За один то проход, но чем можно пользоваться, вот в чем вопрос?
написать программу используя двоичный код? интересная задача