Задача: Дана целочисленная матрица [latex][a_{i,j},\ i=1,\ldots,n;\ j=1,\ldots,m][/latex]. Получить [latex]b_{1},\ldots,b_{n}[/latex], где
[latex]{b}_{i}=\sum_{j=1}^{n}(-1)^{i+j}a_{ij}[/latex]
Код на С++:
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 |
#include <iostream> #include <stdio.h> using namespace std; int main () { int n, m; cin>>n>>m; //вводим размер матрицы int A[n][m]; //основная матрица int B[n]; //результаты for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { cin>>A[i][j]; } } for (int i=0; i<n; i++){ B[i]=0; //обнуляем элементы массива для подсчёта суммы for (int j=0; j<m; j++){ B[i] += ((i+j)%2==0? 1: -1) * A[i][j]; } } for (int i=0; i<n; i++) cout<<B[i]<<" "; //Результаты на экран return 0; } |
Код на Java:
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 |
import java.util.*; import java.lang.*; import java.io.*; class Count{ public static void main (String[] args) { int n, m; Scanner sc = new Scanner (System.in); n = sc.nextInt(); m = sc.nextInt(); int[][] A = new int [n][m]; int[] B; B = new int [n]; for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { A[i][j] = sc.nextInt(); } } for (int i=0; i<n; i++){ B[i] = 0; for (int j=0; j<m; j++){ B[i] += ((i+j)%2==0? 1: -1) * A[i][j]; } } for (int i=0; i<n; i++) System.out.println (B[i] + " "); } } |
Тесты:
[latex]n*m[/latex] | [latex]\begin{bmatrix}{a}_{ij}\end{bmatrix}[/latex] | [latex]b_{i}[/latex] |
3*3 | 1 2 3
4 5 6 7 8 9 |
2 -5 8 |
1*6 | 2 -4 6 -8 10 -12 | 42 |
3*5 | 1 3 5 7 9
11 13 15 17 19 21 23 25 27 29 |
5 -15 25 |
Алгоритм: Чтобы решить эту задачу, необходимо было создать два массива: входной массив (матрицу) и массив результатов (который надо инициализировать нулями). Далее, необходимо завести цикл, в котором будет проводится, собственно говоря, подсчёт. В зависимости от суммы номеров строки и столбца исходной матрицы, -1 в степени этой суммы будет принимать положительное или отрицательное значение. Соответственно, к результату будет прибавляться или отниматься значение, стоящее на i-том j-том месте.
Для проверки правильности работы программы, воспользуйтесь ссылкой.