Задача 3 (Квадрат в квадрате)
Добавлено: 04 апр 2015, 10:25
Здесь будет обсуждение
import java.util.Scanner;
public class kvadrat {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // размер данной матрицы
int m = sc.nextInt(); // размер новой матрицы
int max = 0; // максимальная сумма элементов по периметру
int mas[][] = new int[n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
mas[i][j] = sc.nextInt();
for (int i = 0; i < n - m + 1; i++) // перебираем значение по столбцам и строкам
for (int j = 0; j < n - m + 1; j++) { // от 0 до n-m+1
int sum = 0;
for (int k = i; k < i + m; k++) { // сумма элементов строк
sum += mas[k][j];
sum += mas[k][j + m - 1];
}
for (int k = j; k < j + m; k++) { // сумма элементов столбцов
sum += mas[i][k];
sum += mas[i + m - 1][k];
}
sum = sum - mas[i][j] - mas[i + m - 1][j] // убираем из суммы крайние элементы, т.к их считали два раза
- mas[i + m - 1][j + m - 1] - mas[i][j + m - 1];
if (m == 1) //но если мы уберем крайние элементры при единице, то получим 0
sum = mas[i][j];
if (sum > max) { // проверили максимум
max = sum;
}
}
System.out.println(max);
sc.close();
}
}
10 20
30 15