Решение писать не буду, но направлю твоё мышление, потому-что у тебя сейчас код написан просто «от балды», и не делает вообще ничего
Первым дело ты определил что размер матрицы (i x j), где i — высота матрицы (строки), j — ширина (столбцы)
По заданию, нужно найти минимальное значение в каждой строке матрицы, соответственно перебираем строки
for (let i = 0, i < mass.length, i++) {
// mass[i] это строка массива в каждой итерации цикла
}
до этого момента у тебя всё правильно, а теперь начинаются ошибки. По логике, чтобы найти минимальное значение в строке, нужно пройтись по каждому элементу в текущей строке mass[i], соответственно количество итераций, во втором цикле, должно быть равно mass[i].length, а не mass.length, как у тебя сейчас
for (let j = 0, j < mass[i].length, j++) {
// mass[i][j] это каждый столбец в строке
}
теперь, остаётся только сравнивать каждый элемент mass[i][j], и найти минимальный, для этого перед началом цикла, тебе нужно создать переменную, в которую ты запоминаешь минимальное значение. Ты пытался это сделать, но присваиваешь s = 0, хотя лучше занести сюда первое значение в массиве let min = mass[i][0] (задаю название переменной так, чтобы было понятно что она означает)
И перебирая элементы в цикле, ты должен сравнивать значение текущего минимального (min) и значение текущего элемента (mass[i][j]), если элемент текущий получился меньше, то присваиваешь его значение в минимальному
// вариант 1.
if (min > mass[i][j]) min = mass[i][j];
// вариант 2.
min = Math.min(min, mass[i][j]);
по окончанию цикла, у тебя в переменной min, будет минимальное значение в строке матрицы
for (let i = 0, i < mass.length, i++) {
// mass[i] это строка массива в каждой итерации цикла
// тут создавай переменную min
for (let j = 0, j < mass[i].length, j++) {
// mass[i][j] это каждый столбец в строке
// тут сравнивай текущее значение с минимальным
}
// тут у тебя min будет минимальным в строке
}
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
Вы же используете numpy. Ну так и воспользуйтесь его инструментарием:
import numpy as np
a=np.array ([[0, 2.4, -6, 5, 0.8],
[1.5, 0, 0, -4.3, -3.5],
[0, 1.8, 3.2, -1.2, -1.3],
[0, 0, -2.3, 0, -7.2],
[3.3, -0.8, 0, 3.5, 8]])
res = a.min(axis=1)
print(res)
[-6. -4.3 -1.3 -7.2 -0.8]
параметр axis
указывает, где искать минимумы — 0 — строки, 1 — столбцы
0 / 0 / 0 Регистрация: 10.12.2011 Сообщений: 36 |
|
1 |
|
В каждой строке матрицы найти минимальный элемент31.05.2012, 19:42. Показов 41094. Ответов 6
Дана матрица размера M × N. В каждой строке матрицы найти минимальный элемент
0 |
AAA- 14 / 14 / 5 Регистрация: 14.02.2012 Сообщений: 46 |
||||
31.05.2012, 20:18 |
2 |
|||
2 |
HappyAndRu 13 / 13 / 7 Регистрация: 19.05.2012 Сообщений: 46 |
||||
31.05.2012, 21:02 |
3 |
|||
вот мой вариант:
1 |
DanilAREFY 19 / 19 / 6 Регистрация: 12.04.2011 Сообщений: 35 |
||||
31.05.2012, 21:55 |
4 |
|||
1 |
Заблокирован |
||||
31.05.2012, 22:33 |
5 |
|||
1 |
MrGluck Форумчанин 8194 / 5044 / 1437 Регистрация: 29.11.2010 Сообщений: 13,453 |
||||
01.06.2012, 01:02 |
6 |
|||
1 |
Aniotri 0 / 0 / 0 Регистрация: 22.12.2020 Сообщений: 2 |
||||
01.01.2021, 21:59 |
7 |
|||
0 |
Перейти к содержанию
Индексы минимальных элементов матрицы
Просмотров 3.8к. Обновлено 15 октября 2021
Вывести на экран индексы всех минимальных элементов матрицы.
Эта задача отличается от поиска минимума тем, что нужно найти и вывести на экран не само минимальное значение, а его индексы (позицию, положение в матрице). Кроме того, минимальных (но равных между собой) значений в массиве может быть несколько. Следовательно, разумно вывести индексы всех минимальных элементов.
Задача складывается из двух подзадач, которые должны быть решены последовательно:
- Поиск минимума в массиве (в данном случае двумерном).
- Поиск элементов, равных ранее найденному минимуму.
Найденное минимальное значение должно быть сохранено в переменной (например, minimum). Однако можно было бы сохранять не само значение, а индекс элемента массива. Но поскольку мы имеем дело с матрицей, то пришлось бы сохранять два числа (номер строки и номер столбца).
Алгоритм поиска минимального значения:
- Присвоить minimum максимально возможное (или больше) значение для исследуемого массива.
- Перебрать элементы матрицы (используя конструкцию вложенного цикла). Каждый элемент сравнивать со значением minimum. Если очередной элемент меньше значения minimuma, то следует присвоить значение текущего элемента переменной minimum.
Алгоритм определения позиций всех минимальных элементов матрицы:
- Снова перебираем элементы матрицы.
- Сравниваем каждый элемент со значением minimum.
- Если они равны между собой, то выводим индексы текущего элемента на экран. (Индексы текущего элемента — это значения счетчиков первого и второго циклов.)
Примечания:
- Ниже в решениях задачи поиска индексов минимальных элементов на языках программирования поиск минимального значения выполняется в том же цикле, что и заполнение матрицы.
- Если индексация массива начинается с нуля, то лучше при выводе индексов увеличивать их на единицу. Так будет более ясно, где находится элемент.
Pascal
const N = 5; M = 7;
var
mx: array[1..N,1..M] of integer;
min: integer;
i, j: byte;
begin
min := MAXINT;
randomize;
for i:=1 to N do begin
for j:=1 to M do begin
mx[i,j] := random(50) - 25;
write(mx[i,j]:4);
if mx[i,j] < min then min:=mx[i,j];
end;
writeln;
end;
writeln('Минимальное значение: ', min);
for i:=1 to N do
for j:=1 to M do
if mx[i,j] = min then
writeln('строка: ', i, '; столбец: ', j);
end.
-19 6 3 18 -12 -3 24
-4 15 -6 19 -15 -1 4
6 -9 -12 23 -3 3 -11
5 0 -11 -4 -19 -6 1
17 20 -1 6 17 -1 15
Минимальное значение: -19
строка: 1; столбец: 1
строка: 4; столбец: 5
Язык Си
#include < stdio.h>
#define M 7
#define N 5
main() {
int a[N][M];
int min, i, j;
srand(time(NULL));
min = 25;
for (i=0; i< N; i++) {
for (j=0; j< M; j++) {
a[i][j] = rand() % 50 - 25;
printf("%5d", a[i][j]);
if (min > a[i][j]) min = a[i][j];
}
printf("n");
}
printf("%dn", min);
for (i=0; i< N; i++) {
for (j=0; j< M; j++) {
if (min == a[i][j])
printf("row: %d, col: %dn", i+1, j+1);
}
}
}
Python
индекс минимального элемента массива python
from random import random
M = 7
N = 5
a = []
for i in range(N):
b = []
for j in range(M):
b.append(int(random()*50) - 25)
print("%4d" % b[j], end='')
a.append(b)
print()
min_mx = 25
for i in range(N):
min_i = min(a[i])
if min_i < min_mx:
min_mx = min_i
print(min_mx)
for i in range(N):
for j in range(M):
if min_mx == a[i][j]:
print('Row: %d, col: %d' % (i+1,j+1))
Пример выполнения:-18 -23 -8 17 12 4 -22
16 -10 -18 6 -9 19 23
8 -1 -7 0 -9 24 -12
-5 16 14 -2 1 7 -16
-7 5 1 -23 -4 -4 17
-23
Row: 1, col: 2
Row: 5, col: 4
В языке Python есть встроенная функция min, которая возвращает минимальный элемент одномерного списка. Если же ее применить к двумерному списку, то она возвращает вложенный список, первый элемент которого оказывается минимальным.
Поэтому в коде поиска минимального элемента матрицы эта функция используется к каждой строке (вложенному списку) отдельно.
Использование функции min позволяет не перебирать отдельные элементы каждой строки, а ограничиться только перебором самих строк.
Классический вариант поиска минимального значения матрицы выглядел бы так:
… min_mx = 25 for i in range(N): for j in range(M): if a[i][j] < min_mx: min_mx = a[i][j] …
КуМир
алг индексы минимумов
нач
цел M = 7, N = 5
цел таб a[1:N,1:M]
цел i, j, minimum
minimum := 25
нц для i от 1 до N
нц для j от 1 до M
a[i,j] := int(rand(0,50)) - 25
вывод a[i,j]:4, " "
если minimum > a[i,j] то
minimum := a[i,j]
все
кц
вывод нс
кц
вывод minimum, нс
нц для i от 1 до N
нц для j от 1 до M
если minimum = a[i,j] то
вывод "строка: ",i, ", столбец: ",j, нс
все
кц
кц
кон
Basic-256
M = 7
N = 5
dim a(N,M)
min = 25
for i = 0 to N-1
for j=0 to M-1
a[i,j] = int(rand*50)-25
print a[i,j] + " ";
if min > a[i,j] then min = a[i,j]
next j
next i
print min
for i = 0 to N-1
for j=0 to M-1
if min = a[i,j] then print (i+1) + " " + ( j+1)
next j
next i