Удаление строк и столбцов в матрице
Ввести с консоли n - размерность матрицы a [n] [n]. Задать значения элементов матрицы в интервале значений от -M до M с помощью генератора случайных чисел (класс Random).
Найти максимальный элемент в матрице и удалить из матрицы все строки и столбцы, его содержащие.
Ответы (1 шт):
Автор решения: Agzam4
→ Ссылка
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// Создаем сканер
Scanner s = new Scanner(System.in);
// Пытаемся считать n, ессли ввели не число - завершаем программу
int n;
try {
n = Integer.valueOf(s.nextLine());
} catch (NumberFormatException e) {
return;
}
// Пытаемся считать m, ессли ввели не число - завершаем программу
int m;
try {
m = Integer.valueOf(s.nextLine());
} catch (NumberFormatException e) {
return;
}
// Создаем массив
int[][] arr = new int[n][n];
Random random = new Random();
int max = -m;
ArrayList<Integer> rows = new ArrayList<Integer>();
ArrayList<Integer> column = new ArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
// Случайные числа
arr[i] = random.ints(n, -m, m).toArray();
// Сразу ищем максимальное
for (int j = 0; j < arr.length; j++) {
if(arr[i][j] > max) {
max = arr[i][j];
}
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
// Поиск колонок и столбцов, которые надо удалить
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(max == arr[i][j]) {
if(rows.indexOf(j) == -1)
rows.add(j);
if(column.indexOf(i) == -1)
column.add(i);
}
}
}
System.out.println("\nMax: " + max);
int[][] newArr = new int[n - rows.size()][n - column.size()];
System.out.println("Size: " + (n - rows.size()) + "x" + (n - column.size()));
int newArrI = 0;
int newArrJ = 0;
// СЗаполняем новый массив без столбцов и строк с мах числом
for (int i = 0; i < n; i++) {
if(rows.indexOf(i) == -1) {
newArrJ = 0;
for (int j = 0; j < n; j++) {
if(column.indexOf(j) == -1) {
newArr[newArrI][newArrJ]
= arr[j][i];
newArrJ++;
}
}
newArrI++;
}
}
// Печать результатата
for (int i = 0; i < newArr.length; i++) {
for (int j = 0; j < newArr[i].length; j++) {
System.out.println();
System.out.print(newArr[i][j] + " ");
}
}
}
}