8524. Сумма положительных в матрице

 

Задана матрица размера n * n. Найдите сумму всех ее положительных чисел.

 

Вход. Первая строка содержит одно целое число n (1 ≤ n ≤ 100). Следующие n строк содержат элементы матрицы размером n * n. Элементами матрицы являются целые числа, по модулю не превышающие 100.

 

Выход. Выведите сумму всех положительных чисел матрицы.

 

Пример входа

Пример выхода

3

4 -2 5

1 -4 -12

0 1 -3

11

 

 

РЕШЕНИЕ

массив - двумерный

 

Анализ алгоритма

С помощью двойного цикла вычисляем сумму положительных чисел матрицы (двумерного массива).

 

Реализация алгоритма

Объявим двумерный массив m.

 

int m[101][101];

 

Читаем элементы матрицы. В переменной s вычисляем сумму всех ее положительных чисел.

 

scanf("%d",&n);

s = 0;

for(i = 0; i < n; i++)

for(j = 0; j < n; j++)

{

  scanf("%d",&m[i][j]);

  if (m[i][j] > 0) s = s + m[i][j];

}

 

Выводим ответ.

 

printf("%d\n",s);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int m[][] = new int[n][n];

   

    int s = 0;

    for(int i = 0; i < n; i++)

    for(int j = 0; j < n; j++)

    {

      m[i][j] = con.nextInt();

      if (m[i][j] > 0) s = s + m[i][j];

    }

 

    System.out.println(s);

    con.close();

  }

}

 

Java реализация – threads

 

import java.util.*;

 

class SumRow extends Thread

{

  int[][] m;

  int row, res;

 

  SumRow(int[][] m, int row)

  {

    this.m = m;

    this.row = row;

  }

 

  public void run()

  {

    res = 0;

    for(int i = 0; i < m[0].length; i++)

      if (m[row][i] > 0) res = res + m[row][i];

  }

 

  public int GetValue()

  {

    return res;

  }

}

 

public class Main

{

  public static void main(String[] args) throws InterruptedException

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int m[][] = new int[n][n];

    for(int i = 0; i < n; i++)

    for(int j = 0; j < n; j++)

      m[i][j] = con.nextInt();

 

    SumRow s[] = new SumRow[n];

    for(int i = 0; i < n; i++)

    {

      s[i] = new SumRow(m,i);

      s[i].start();

    }

   

    for(int i = 0; i < n; i++)

      s[i].join();

   

    int sum = 0;

    for(int i = 0; i < n; i++)

      sum = sum + s[i].GetValue();

     

    System.out.println(sum);

    con.close();

  }

}

 

Python реализация

Читаем входные данные.

 

n = int(input())

a = [list(map(int, input().split())) for _ in range(n)]

 

В переменной s вычисляем сумму всех положительных чисел матрицы.

 

sum = 0

for i in range(n):

  for j in range(n):

    if a[i][j] > 0: sum += a[i][j]

 

Выводим ответ.

 

print(sum)

 

Python реализацияконструирование списков

Читаем входные данные.

 

n = int(input())

a = [list(map(int, input().split())) for _ in range(n)]

 

Вычисляем сумму всех положительных элементов матрицы.

 

sum = sum(a[i][j] for i in range(n) for j in range(n) if a[i][j] > 0)

 

Выводим ответ.

 

print(sum)