Перейти к содержанию
Найти максимальные элементы столбцов матрицы
Просмотров 7к. Обновлено 15 октября 2021
Найти максимальный элемент каждого столбца матрицы.
При поиске наибольших элементов в столбцах внешний цикл должен перебирать столбцы, а внутренний — элементы в столбцах. Это значит, что во внутреннем цикле меняется первый индекс элемента, второй остается постоянным в рамках одной итерации внешнего цикла.
В теле внешнего цикла сначала предполагается, что наибольшим является первый элемент текущего столбца. Первый элемент каждого столбца имеет индекс строки, равный 1 (или 0 при индексации с нуля). Второй индекс — это номер столбца, определяется счетчиком внешнего цикла.
Далее в теле внешнего цикла выполняется внутренний цикл, перебирающий элементы текущего столбца, начиная со второго элемента столбца. В теле внутреннего цикла текущий элемент сравнивается с тем, что записан в переменной-максимуме. Если текущий больше, то он присваивается этой переменной.
После завершения внутреннего цикла переменная-максимум будет содержать наибольший элемент столбца, который можно вывести на экран.
Pascal
const N = 15; M = 10;
var
arr: array[1..N,1..M] of byte;
i,j,max: byte;
begin
randomize;
for i:=1 to N do begin
for j:=1 to M do begin
arr[i,j] := random(256);
write(' |',arr[i,j]:3,'| ');
end;
writeln;
end;
for i:=1 to M do
write(' ----- ');
writeln;
for j:=1 to M do begin
max := arr[1,j];
for i:=2 to N do
if arr[i,j] > max then
max := arr[i,j];
write(' ',max:3,' ');
end;
writeln;
end.
Пример(ы) выполнения программы на языке Pascal:| 75| |230| | 21| | 95| |219| |102| | 64| |125| | 8| |132|
|190| | 73| |127| | 85| |110| |188| | 45| |108| |104| |233|
| 85| |160| | 47| |158| | 32| | 75| | 59| |149| |175| |226|
|179| |208| |239| |238| |120| | 83| |120| |135| |252| | 19|
| 33| |217| |247| | 82| | 0| |125| |190| | 53| | 87| |186|
|239| | 48| | 29| | 35| |210| | 96| | 46| | 17| |106| |225|
|232| | 1| |201| | 1| | 54| |249| | 46| |179| |122| | 58|
| 66| |190| |161| | 84| | 88| | 33| |201| | 64| | 43| | 7|
|206| |114| |196| | 4| |137| |165| | 63| |144| |183| |121|
|151| | 9| |161| |120| |197| |228| | 20| |121| |176| |217|
|109| | 19| |188| |105| |114| |230| |217| |172| |194| |127|
|138| |222| |116| |132| | 92| |105| |222| | 73| | 94| | 16|
| 30| |127| |125| | 54| |134| |240| | 75| |227| |215| | 38|
| 87| | 64| |167| |191| |212| |157| | 62| |231| |166| |177|
|184| |179| |201| | 19| |242| |185| | 31| |226| |101| |123|
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
239 230 247 238 242 249 222 231 252 233
Язык Си
#include < stdio.h>
#define N 15
#define M 10
main() {
int arr[N][M], i, j, max;
srand(time(NULL));
for (i=0; i< N; i++) {
for (j=0; j< M; j++) {
arr[i][j] = rand() % 256;
printf(" |%3d| ", arr[i][j]);
}
printf("n");
}
for (j=0; j< M; j++)
printf(" ----- ");
printf("n");
for (j=0; j< M; j++) {
max = arr[0][j];
for (i=1; i< N; i++)
if (arr[i][j] > max)
max = arr[i][j];
printf(" %3d ", max);
}
printf("n");
}
Python
найти максимальный элемент столбца матрицы Python
from random import random
N = 15
M = 10
arr = []
for i in range(N):
lst = []
for j in range(M):
lst.append(int(random() * 256))
arr.append(lst)
for i in range(N):
for j in range(M):
print(" |%3d| " % arr[i][j], end='')
print()
for i in range(M):
print(" ----- ", end='')
print()
for j in range(M):
mx = arr[0][j]
for i in range(N):
if arr[i][j] > mx:
mx = arr[i][j]
print(" |%3d| " % mx, end='')
print()
КуМир
алг
нач
цел N = 15, M = 10
целтаб t[1:N,1:M]
цел mx, i, j
нц для i от 1 до N
нц для j от 1 до M
t[i,j] := irnd(256)
вывод " |",t[i,j]:3,"| "
кц
вывод нс
кц
нц для i от 1 до M
вывод " ----- "
кц
вывод нс
нц для j от 1 до M
mx := t[1, j]
нц для i от 2 до N
если t[i,j] > mx то
mx := t[i,j]
все
кц
вывод ' ',mx:3,' '
кц
кон
Basic-256
N = 15
M = 10
dim arr(N,M)
for i=0 to N-1
for j=0 to M-1
arr[i,j] = int(rand*90)+10
print arr[i,j] + " ";
next j
next i
for j=0 to M-1
print "-----";
next j
for j=0 to M-1
max = arr[0,j]
for i=1 to N-1
if arr[i,j] > max then max = arr[i,j]
next i
print max + " ";
next j
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given a matrix, the task is to find the maximum element of each column.
Examples:
Input: [1, 2, 3] [1, 4, 9] [76, 34, 21] Output: 76 34 21 Input: [1, 2, 3, 21] [12, 1, 65, 9] 1, 56, 34, 2] Output: 12 56 65 21
Approach: The idea is to run the loop for no_of_cols. Check each element inside the column and find the maximum element. Finally, print the element.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using
namespace
std;
const
int
MAX = 100;
void
largestInColumn(
int
mat[][MAX],
int
rows,
int
cols)
{
for
(
int
i = 0; i < cols; i++) {
int
maxm = mat[0][i];
for
(
int
j = 1; j < rows; j++) {
if
(mat[j][i] > maxm)
maxm = mat[j][i];
}
cout << maxm << endl;
}
}
int
main()
{
int
n = 4, m = 4;
int
mat[][MAX] = { { 3, 4, 1, 8 },
{ 1, 4, 9, 11 },
{ 76, 34, 21, 1 },
{ 2, 1, 4, 5 } };
largestInColumn(mat, n, m);
return
0;
}
C
#include <stdio.h>
#define MAX 100
void
largestInColumn(
int
mat[][MAX],
int
rows,
int
cols)
{
for
(
int
i = 0; i < cols; i++) {
int
maxm = mat[0][i];
for
(
int
j = 1; j < rows; j++) {
if
(mat[j][i] > maxm)
maxm = mat[j][i];
}
printf
(
"%dn"
,maxm);
}
}
int
main()
{
int
n = 4, m = 4;
int
mat[][MAX] = { { 3, 4, 1, 8 },
{ 1, 4, 9, 11 },
{ 76, 34, 21, 1 },
{ 2, 1, 4, 5 } };
largestInColumn(mat, n, m);
return
0;
}
Java
public
class
GFG {
public
static
void
largestInColumn(
int
cols,
int
[][] arr)
{
for
(
int
i =
0
; i < cols; i++) {
int
maxm = arr[
0
][i];
for
(
int
j =
1
; j < arr[i].length; j++)
if
(arr[j][i] > maxm)
maxm = arr[j][i];
System.out.println(maxm);
}
}
public
static
void
main(String[] args)
{
int
[][] arr =
new
int
[][] { {
3
,
4
,
1
,
8
},
{
1
,
4
,
9
,
11
},
{
76
,
34
,
21
,
1
},
{
2
,
1
,
4
,
5
} };
largestInColumn(
4
, arr);
}
}
Python3
MAX
=
100
def
largestInColumn(mat, rows, cols):
for
i
in
range
(cols):
maxm
=
mat[
0
][i]
for
j
in
range
(rows):
if
mat[j][i] > maxm:
maxm
=
mat[j][i]
print
(maxm)
n, m
=
4
,
4
mat
=
[[
3
,
4
,
1
,
8
],
[
1
,
4
,
9
,
11
],
[
76
,
34
,
21
,
1
],
[
2
,
1
,
4
,
5
]]
largestInColumn(mat, n, m);
C#
using
System;
class
GFG
{
public
static
void
largestInColumn(
int
cols,
int
[, ] arr)
{
for
(
int
i = 0; i < cols; i++)
{
int
maxm = arr[0, i];
for
(
int
j = 1; j < arr.GetLength(0); j++)
if
(arr[j, i] > maxm)
maxm = arr[j, i];
Console.WriteLine(maxm);
}
}
public
static
void
Main()
{
int
[, ] arr =
new
int
[, ] { { 3, 4, 1, 8 },
{ 1, 4, 9, 11 },
{ 76, 34, 21, 1 },
{ 2, 1, 4, 5 } };
largestInColumn(4, arr);
}
}
PHP
<?php
$MAX
= 100;
function
largestInColumn(
$mat
,
$rows
,
$cols
)
{
for
(
$i
= 0;
$i
<
$cols
;
$i
++)
{
$maxm
=
$mat
[0][
$i
];
for
(
$j
= 1;
$j
<
$rows
;
$j
++)
{
if
(
$mat
[
$j
][
$i
] >
$maxm
)
$maxm
=
$mat
[
$j
][
$i
];
}
echo
$maxm
,
"n"
;
}
}
$n
= 4;
$m
= 4;
$mat
=
array
(
array
( 3, 4, 1, 8 ),
array
( 1, 4, 9, 11 ),
array
( 76, 34, 21, 1 ),
array
( 2, 1, 4, 5 ));
largestInColumn(
$mat
,
$n
,
$m
);
?>
Javascript
<script>
function
largestInColumn(cols,arr)
{
for
(let i = 0; i < cols; i++)
{
let maxm = arr[0][i];
for
(let j = 1; j < arr[i].length; j++)
if
(arr[j][i] > maxm)
maxm = arr[j][i];
document.write(maxm+
"<br>"
);
}
}
let arr = [[ 3, 4, 1, 8 ],
[ 1, 4, 9, 11 ],
[ 76, 34, 21, 1 ],
[ 2, 1, 4, 5 ]];
largestInColumn(4, arr);
</script>
Time Complexity: O(n * m), Here n is No. of Rows and m is No. of Column.
Auxiliary Space: O(1)
Last Updated :
15 Sep, 2022
Like Article
Save Article
coal chamber 0 / 0 / 0 Регистрация: 12.03.2018 Сообщений: 32 |
||||
1 |
||||
В каждом столбце матрицы найти максимальные элементы25.04.2018, 18:53. Показов 6090. Ответов 4 Метки нет (Все метки)
Можете помочь. Как сделать чтобы после матрицы отображались макcимальные элементы из столбцов? Что добавить?
0 |
k0vpack 82 / 78 / 34 Регистрация: 13.02.2018 Сообщений: 1,347 |
||||
25.04.2018, 21:21 |
2 |
|||
coal chamber, объясню, думаю сам догадаешься, создай массив (только в данном случае) переменных int max[20] (как у тебя видно), после прохождение каждого столбца матрицы определяй максимальный элемент, вот так:
писал без компилятора, так что возможно ошибся где-то, но суть ты должен был понять, после этого всегда в массиве max остались максимальные элементы каждого столбца по номеру
0 |
Yetty 7427 / 5021 / 2891 Регистрация: 18.12.2017 Сообщений: 15,694 |
||||
26.04.2018, 01:09 |
3 |
|||
создай массив … переменных int max[20 не стоит создавать массив там где это не нужно coal chamber,
0 |
82 / 78 / 34 Регистрация: 13.02.2018 Сообщений: 1,347 |
|
26.04.2018, 18:27 |
4 |
Yetty,
cout <<max<<» «; я понимаю что задача была
отображались но для дальнейшей работы непосредственно с максимальными элементами нужно будет массив, что бы в следующий раз, не было вопросов у кого-то, как потом с этим работать. Не по теме: да ладно, я не дочитал что нужно просто вывести
0 |
coal chamber 0 / 0 / 0 Регистрация: 12.03.2018 Сообщений: 32 |
||||
26.04.2018, 20:08 [ТС] |
5 |
|||
а что теперь добавить , чтобы из каждого полученного максимального значения вычесть каждое число из соответствующего столбца и отобразить это в виде матрицы?
0 |
#include <iostream>
using namespace std;
int main()
{
const int ROWS = 5;
const int COLS = 5;
float array[ROWS][COLS];
int count = 0;
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
cout << (array[i][j] = rand() % 10) << "t";
}
cout << endl;
}
/*for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
if (array[j][i] == 0)
count++;
}
}*/
int tempmax = array[0][0];
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
if (array[j][i] > tempmax)
{
tempmax = array[j][i];
}
}
}
cout << tempmax;
задан 4 мая 2022 в 11:11
2
for (int j = 0; j < COLS; j++)
{
int tempmax = array[0][j];
for (int i = 1; i < ROWS; i++)
if (array[i][j] > tempmax)
tempmax = array[i][j];
cout << tempmax;
}
«Вот так как-то» (с)
ответ дан 4 мая 2022 в 11:36
HarryHarry
214k15 золотых знаков117 серебряных знаков229 бронзовых знаков
2
Раз нужно найти максимум в столбце, то и внешний цикл делайте по столбцам, в начале цикла задавая временный максимум
ответ дан 4 мая 2022 в 11:19
MBoMBo
47.8k1 золотой знак17 серебряных знаков40 бронзовых знаков
1
Как написал @MBo сначала цикл по столбцам
int tempmax[COLS]; // максимальных значений столько, сколько столбцов
for (int j = 0; j < COLS; j++) // сначала цикл по столбцам
{
tempmax[j] = array[0][j]; // первоначальное значение == первому элементу
for (int i = 1; i < ROWS; i++) // внутри - цикл по строкам
{
if (array[i][j] > tempmax[j])
{
tempmax[j] = array[i][j];
}
}
}
ответ дан 4 мая 2022 в 11:46
DmitryKDmitryK
4,4961 золотой знак5 серебряных знаков19 бронзовых знаков
1
program maxelst; var a,b:array[1..100,1..100] of integer; i,j,n,m,max:integer; begin Writeln('Vvedite N and M');readln(n,m); for i:=1 to n do for j:=1 to n do a[i,j]:=random(50); for i:=1 to m do for j:=1 to m do b[i,j]:=random(50); writeln('Isxodnya matrica 1'); for i:=1 to n do begin for j:=1 to n do write(a[i,j],' '); writeln; end; for j:=1 to n do begin max:=0; for i:=1 to n do if a[i,j]>max then max:=a[i,j]; writeln('Max v stolbce ',j,'=',max); end; writeln('Isxodnya matrica 2'); for i:=1 to n do begin for j:=1 to n do write(a[i,j],' '); writeln; end; for j:=1 to n do begin max:=0; for i:=1 to m do if a[i,j]>max then max:=a[i,j]; writeln('Max v stolbce ',j,'=',max); end; end.