Java, сумма строк и столбцов - PullRequest
0 голосов
/ 30 марта 2020

Здравствуйте. Я пытаюсь вычислить сумму каждой строки и столбца матрицы, а затем вывести сумму наименьшего значения. Прямо сейчас я столкнулся с проблемой. Сумма, которую я получаю "smallRows", сумма, которую я получаю, не самая маленькая строка из матрицы. Это просто последний. Как я могу улучшить это? Заранее спасибо!

    {
        int rows = 4;
        int columns = 5;
        int[][] matrix = new int[rows][columns];
        for (int i = 0; i < rows; i++) 
        {
            for (int j = 0; j < columns; j++) 
            {
                matrix[i][j] = new Random().nextInt(9)  + 1;
            }   
        }
        printMatrix(matrix);
        int[] tempRows = new int[columns];
        int[] smallRows = new int[columns];

        for (int i = 0; i < rows; i++) 
        {
            for (int j = 0; j < columns; j++) 
            {
                tempRows[j] = matrix[i][j];
            }

            if(sum(smallRows) == 0)
            {
                smallRows = tempRows;
            }
            if (sum(tempRows) < sum(smallRows)) 
            {
                smallRows = tempRows;
            }
        }
    }
    public static int sum(int[] a)
    {
        int sum = 0;
        for (int i = 0; i < a.length; i++) 
        {
            sum += a[i];    
        }
        return sum;
    }
    public static void printMatrix(int mat[][]) 
    { 
        for (int[] row : mat)
            System.out.println(Arrays.toString(row)); 
    }

1 Ответ

0 голосов
/ 30 марта 2020

Вот как вы можете узнать наименьшее значение и его индекс, и если оно из строки или столбца

int smallest = Integer.MAX_VALUE;
int indexOfSmallest = -1;
boolean isRow = true;

for (int i = 0; i < rows; i++) { 
    int value = sum(matrix[i]);
    if (value < smallest) {
        smallest = value;
        indexOfSmallest = i;
    } 
}
for (int i = 0; i < columns; i++) { 
    int columnSum = 0;
    for (int j = 0; j < rows; j++) {
        columnSum += matrix[i][j];
    }
    if (columnSum < smallest) {
        smallest = columnSum;
        indexOfSmallest = i;
        isRow = false;
    }
}

После этого вы можете напечатать строку или столбец с наименьшим значением, indexOfSmallest и isRow баллов на.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...