Суммы по косой. Просуммировать элементы матрицы [latex]A(n,n)[/latex] по каждой из линий , параллельных главной диагонали. Напечатать полученные суммы.
Матрица | Суммы |
1 2 3 4 5 6 7 8 9 |
7 12 15 8 3 |
-1 2 -3 4 10 5 11 6 -7 8 -9 2 12 5 13 6 |
12 -2 31 1 15 3 4 |
0 0 0 0 |
0 0 0 |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <iostream> using namespace std; int main() { int t; cin>>t; const int n=t; int a[n][n]; int b[2*n-1]; for (int i=0;i<2*n-1;i++) b[i]=0; for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { cin>>a[i][j]; cout<<a[i][j]<<" "; } cout<<"\n"; } for (int i=0;i<n;i++) for (int j=0;j<n;j++) { b[i-j+n-1]+=a[i][j]; } for (int i=2*n-2;i>=0;i--) cout<<b[i]<<" "; return 0; } |
Сначала вводим размер квадратной матрицы — [latex]n[/latex]. Создаем одномерный массив [latex]b[/latex] в который будет результат. В нем будет [latex]2n-1[/latex] элементов, которые мы заполняем нулями.После чего в цикле будем накапливать суммы [latex]b[i-j+n-1]+=a[i][j].[/latex].
При [latex]i=j[/latex], мы записываем сумму диагоналей в [latex]b[n-1][/latex], который находиться в середине нашего массива [latex]b[/latex], как нам и нужно.
Если [latex]i>j[/latex], мы записываем суммы в элементы после середины нашего массива [latex]b[/latex].
Если [latex]i<j[/latex], мы записываем суммы в элементы до середины нашего массива [latex]b[/latex].
Константу, которая нам нужна, будем искать по формуле [latex] max(j) — min(i)[/latex], которая равна [latex]n-1[/latex].
Код программы можно посмотреть тут