Given a matrix, the task is to find the minimum element of each row and each column.
Examples:
Input: [1, 2, 3] [1, 4, 9] [76, 34, 21] Output: Minimum element of each row is {1, 1, 21} Minimum element of each column is {1, 2, 3} Input: [1, 2, 3, 21] [12, 1, 65, 9] [11, 56, 34, 2] Output: Minimum element of each row is {1, 1, 2} Minimum element of each column is {1, 2, 3 , 2}
Approach: The idea is to run the loop for no_of_rows. Check each element inside the row and find for the minimum element. Finally, print the element. Similarly, check each element inside the column and find for the minimum 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
smallestInRow(
int
mat[][MAX],
int
n,
int
m)
{
cout <<
" { "
;
for
(
int
i = 0; i < n; i++) {
int
minm = mat[i][0];
for
(
int
j = 1; j < m; j++) {
if
(mat[i][j] < minm)
minm = mat[i][j];
}
cout << minm <<
", "
;
}
cout <<
"}"
;
}
void
smallestInCol(
int
mat[][MAX],
int
n,
int
m)
{
cout <<
" { "
;
for
(
int
i = 0; i < m; i++) {
int
minm = mat[0][i];
for
(
int
j = 1; j < n; j++) {
if
(mat[j][i] < minm)
minm = mat[j][i];
}
cout << minm <<
", "
;
}
cout <<
"}"
;
}
int
main()
{
int
n = 3, m = 3;
int
mat[][MAX] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
cout <<
"Minimum element of each row is "
;
smallestInRow(mat, n, m);
cout <<
"nMinimum element of each column is "
;
smallestInCol(mat, n, m);
return
0;
}
C
#include <stdio.h>
#define MAX 100
void
smallestInRow(
int
mat[][MAX],
int
n,
int
m)
{
printf
(
" { "
);
for
(
int
i = 0; i < n; i++) {
int
minm = mat[i][0];
for
(
int
j = 1; j < m; j++) {
if
(mat[i][j] < minm)
minm = mat[i][j];
}
printf
(
"%d, "
,minm);
}
printf
(
"}"
);
}
void
smallestInCol(
int
mat[][MAX],
int
n,
int
m)
{
printf
(
" { "
);
for
(
int
i = 0; i < m; i++) {
int
minm = mat[0][i];
for
(
int
j = 1; j < n; j++) {
if
(mat[j][i] < minm)
minm = mat[j][i];
}
printf
(
"%d, "
,minm);
}
printf
(
"}"
);
}
int
main()
{
int
n = 3, m = 3;
int
mat[][MAX] = { { 2, 1, 7 },
{ 3, 7, 2 },
{ 5, 4, 9 } };
printf
(
"Minimum element of each row is "
);
smallestInRow(mat, n, m);
printf
(
"nMinimum element of each column is "
);
smallestInCol(mat, n, m);
return
0;
}
Java
public
class
GFG {
final
static
int
MAX =
100
;
static
void
smallestInRow(
int
mat[][],
int
n,
int
m) {
System.out.print(
" { "
);
for
(
int
i =
0
; i < n; i++) {
int
minm = mat[i][
0
];
for
(
int
j =
1
; j < m; j++) {
if
(mat[i][j] < minm) {
minm = mat[i][j];
}
}
System.out.print(minm +
", "
);
}
System.out.println(
"}"
);
}
static
void
smallestInCol(
int
mat[][],
int
n,
int
m) {
System.out.print(
" { "
);
for
(
int
i =
0
; i < m; i++) {
int
minm = mat[
0
][i];
for
(
int
j =
1
; j < n; j++) {
if
(mat[j][i] < minm) {
minm = mat[j][i];
}
}
System.out.print(minm +
", "
);
}
System.out.print(
"}"
);
}
public
static
void
main(String args[]) {
int
n =
3
, m =
3
;
int
mat[][] = {{
2
,
1
,
7
},
{
3
,
7
,
2
},
{
5
,
4
,
9
}};
System.out.print(
"Minimum element of each row is "
);
smallestInRow(mat, n, m);
System.out.print(
"nMinimum element of each column is "
);
smallestInCol(mat, n, m);
}
}
Python3
MAX
=
100
def
smallestInRow(mat, n, m):
print
(
"{"
, end
=
"")
for
i
in
range
(n):
minm
=
mat[i][
0
]
for
j
in
range
(
1
, m,
1
):
if
(mat[i][j] < minm):
minm
=
mat[i][j]
print
(minm, end
=
","
)
print
(
"}"
)
def
smallestInCol(mat, n, m):
print
(
"{"
, end
=
"")
for
i
in
range
(m):
minm
=
mat[
0
][i]
for
j
in
range
(
1
, n,
1
):
if
(mat[j][i] < minm):
minm
=
mat[j][i]
print
(minm, end
=
","
)
print
(
"}"
)
if
__name__
=
=
'__main__'
:
n
=
3
m
=
3
mat
=
[[
2
,
1
,
7
],
[
3
,
7
,
2
],
[
5
,
4
,
9
]];
print
(
"Minimum element of each row is"
,
end
=
" "
)
smallestInRow(mat, n, m)
print
(
"Minimum element of each column is"
,
end
=
" "
)
smallestInCol(mat, n, m)
C#
using
System;
class
GFG
{
readonly
static
int
MAX = 100;
static
void
smallestInRow(
int
[,]mat,
int
n,
int
m)
{
Console.Write(
" { "
);
for
(
int
i = 0; i < n; i++)
{
int
minm = mat[i, 0];
for
(
int
j = 1; j < m; j++)
{
if
(mat[i, j] < minm)
{
minm = mat[i, j];
}
}
Console.Write(minm +
", "
);
}
Console.WriteLine(
"}"
);
}
static
void
smallestInCol(
int
[,]mat,
int
n,
int
m)
{
Console.Write(
" { "
);
for
(
int
i = 0; i < m; i++)
{
int
minm = mat[0, i];
for
(
int
j = 1; j < n; j++)
{
if
(mat[j, i] < minm)
{
minm = mat[j, i];
}
}
Console.Write(minm +
", "
);
}
Console.Write(
"}"
);
}
public
static
void
Main()
{
int
n = 3, m = 3;
int
[,]mat = {{2, 1, 7},
{3, 7, 2},
{5, 4, 9}};
Console.Write(
"Minimum element of "
+
"each row is "
);
smallestInRow(mat, n, m);
Console.Write(
"nMinimum element of "
+
"each column is "
);
smallestInCol(mat, n, m);
}
}
PHP
<?php
$MAX
= 100;
function
smallestInRow(&
$mat
,
$n
,
$m
)
{
echo
" { "
;
for
(
$i
= 0;
$i
<
$n
;
$i
++)
{
$minm
=
$mat
[
$i
][0];
for
(
$j
= 1;
$j
<
$m
;
$j
++)
{
if
(
$mat
[
$i
][
$j
] <
$minm
)
$minm
=
$mat
[
$i
][
$j
];
}
echo
$minm
.
", "
;
}
echo
"}"
;
}
function
smallestInCol(&
$mat
,
$n
,
$m
)
{
echo
" { "
;
for
(
$i
= 0;
$i
<
$m
;
$i
++)
{
$minm
=
$mat
[0][
$i
];
for
(
$j
= 1;
$j
<
$n
;
$j
++)
{
if
(
$mat
[
$j
][
$i
] <
$minm
)
$minm
=
$mat
[
$j
][
$i
];
}
echo
$minm
.
", "
;
}
echo
"}"
;
}
$n
= 3;
$m
= 3;
$mat
=
array
(
array
( 2, 1, 7 ),
array
( 3, 7, 2 ),
array
( 5, 4, 9 ));
echo
"Minimum element of each row is "
;
smallestInRow(
$mat
,
$n
,
$m
);
echo
"nMinimum element of each column is "
;
smallestInCol(
$mat
,
$n
,
$m
);
?>
Javascript
<script>
let MAX = 100;
function
smallestInRow(mat,n,m) {
document.write(
" { "
);
for
(let i = 0; i < n; i++) {
let minm = mat[i][0];
for
(let j = 1; j < m; j++) {
if
(mat[i][j] < minm) {
minm = mat[i][j];
}
}
document.write(minm +
", "
);
}
document.write(
"}"
+
"<br>"
);
}
function
smallestInCol(mat,n,m) {
document.write(
" { "
);
for
(let i = 0; i < m; i++) {
let minm = mat[0][i];
for
(let j = 1; j < n; j++) {
if
(mat[j][i] < minm) {
minm = mat[j][i];
}
}
document.write(minm +
", "
);
}
document.write(
"}"
);
}
let n = 3, m = 3;
let mat = [[2, 1, 7],
[3, 7, 2],
[5, 4, 9]];
document.write(
"Minimum element of each row is "
);
smallestInRow(mat, n, m);
document.write(
"nMinimum element of each column is "
);
smallestInCol(mat, n, m);
</script>
Output
Minimum element of each row is { 1, 2, 4, } Minimum element of each column is { 2, 1, 2, }
Complexity Analysis:
- Time complexity: O(n*m), as we are using nested for loops to traverse the Matrix.
- Auxiliary Space: O(1), as we are not using any extra space.
Last Updated :
09 Sep, 2022
Like Article
Save Article
Формулировка задачи:
Здравствуйте, помогите пожалуйста, нужно найти мин. элемент в каждом столбце матрицы, но у меня не выводит результат, видно я где-то допустил ошибку или что-то сделал не так, помогите пожалуйста и объясните, буду очень признателен.
#include <stdio.h> int main() { int a[4][6]; int i, j, min; int m[6]; for (i=0; i<4; i++) { for (j=0; j<6; j++) { scanf("%d",&a[i][j]); } } for (j=0; j<6; j++) { min = a[0][j]; for (i=0; i<4; i++) { if(min > a[i][j]) { min = a[i][j]; m[j] = min; printf("%d", m[j] ); } } return 0; } }
Код к задаче: «Найти минимальный элемент в каждом столбце матрицы»
textual
if(min > a[i][j]) { min = a[i][j]; m[j] = min; printf("%d", m[j] ); }
Полезно ли:
12 голосов , оценка 4.083 из 5
Прочтите прежде чем задавать вопрос!
1. Заголовок темы должен быть информативным. В противном случае тема удаляется …
2. Все тексты программ должны помещаться в теги [code=pas] … [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. «FAQ«, если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение — только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы — на PM!
6. Одна тема — один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
|
Сообщение |
|
Новичок
Группа: Пользователи
Репутация: |
Нужно найти минимальный элемент каждого столбца матрицы
Остальное приводить не стал, там просто описание переменных и ввод/вывод матрицы. Код for J:=1 to m do begin , а затем уже строка Код for i:=1 to n do begin , |
|
|
мисс_граффити |
Сообщение |
просто человек
Группа: Пользователи
Репутация: |
если перевести на русский: Код для каждого столбца { то есть так мы выбираем столбец и идем по его элементам. for i:=1 to n do begin можешь начинать не с 1, а с 2 — первый элемент ты уже рассмотрел. ——————— Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. не отвечаю. Даже «один-единственный раз» в виде исключения! |
|
|
volvo |
Сообщение |
Гость |
А зачем варианты-то перебирать? В задании же ясно сказано: минимум в столбце, значит первый индекс матрицы (номер строки) изменяется быстрее… Отсюда следует, что первый индекс должен меняться во внутреннем цикле. |
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
Связь с администрацией: bu_gen в домене octagram.name
const int m = 4, n = 4;
int i, j;
int arr[m][n];
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
{
printf("arr[%d][%d]=", i, j);
scanf_s("%d", &arr[i][j]);
}
puts("Матрицы имеет вид:");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
printf("%4d", arr[i][j]);
putchar('n');
}
int arrMin[n][m];
int min;
for (j = 0; j < n; j++)
{
min = 0;
for (i = 0; i < m; i++)
{
if (arr[min][j] > arr[i][j])
{
min = i;
}
}
arrMin[i][j] = arr[min][j];
}
printf("Минимальные элементы столбцов:n");
for (i = 0; i < n; i++)
{
//for (j = 0; j < m; j++)
printf("%4d(%d,%d)",arrMin[i][j],i,j);;
}
return 0;
}
задан 8 дек 2019 в 15:09
2
arrmin
может быть быть одномерным массивом, хранящим номер строки минимума в столбце (а в настоящий момент выводится что попало)
(ideone)
int arrMin[n];
...
arrMin[j] = min;
...
printf("%4d(%d,%d)",arr[arrMin[i]][i],arrMin[i], i);
ответ дан 8 дек 2019 в 16:05
MBoMBo
47.9k1 золотой знак17 серебряных знаков40 бронзовых знаков
...
int arrMin[m];
int min;
for(j = 0; j < m; ++j)
{
int min = 0;
for(i = 1; i < n; ++i)
{
if (arr[i][j] < arr[min][j]);
}
arrMin[j] = min;
}
for (j = 0; j < m; j++)
{
printf("В %d столбце в %d строке хранится минимальный элемент равный %d", j, arrMin[j], arr[arrMin[j]][j]);
putchar('n');
}
...
ответ дан 8 дек 2019 в 16:37
slmslm
212 бронзовых знака
Перейти к содержанию
Найти максимальные элементы столбцов матрицы
Просмотров 7.1к. Обновлено 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