Удаление строк и столбцов в матрице

Ввести с консоли 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] + " ");
            }
        }
    }
}
→ Ссылка