atvkaprolon
?>

язык- c#. создать функцию, вычисляющую наибольший из минимальных элементов строк матрицы а, состоящей из m строк и n столбцов. использовать функцию для вычисления указанных величин в матрице d из 4 строк и 5 столбцов и в матрицы e из 3 строк и 5 столбцов.

Информатика

Ответы

татьяна1245
A: array[1..10, 1..10] of integer; i, j, M, N: byte; MinElem: integer; begin write('M = '); readln(M); write('N = '); readln(N); { Формируем и выводим матрицу: } randomize; writeln('Случайная матрица ', M, 'x', N, ':'); for i := 1 to M do begin for j := 1 to N do begin a[i, j] := -100 + random(200); write(a[i, j]:4) end; writeln end; writeln; writeln('Минимальный элемент в каждой строке:'); for i := 1 to M do begin { Начальное значение минимального элемента равно первому элементу строки (j = 1): } MinElem := a[i, 1]; for j := 2 to N do { Проверяем остальные элементы строки: j = 2, 3, ..., N } { Если a[i,j] меньше минимума, то новым минимумом становится a[i,j] } if a[i, j] < MinElem then MinElem := a[i, j]; writeln(i, '-я строка: минимальный элемент = ', MinElem) end; readln end.
Caragyant
Сумо́ (яп. 相撲) — вид единоборств, в котором два борца выявляют сильнейшего на круглой площадке (дохё). Родина этого вида спорта — Япония. Японцы относят сумо к боевым искусствам. Традиция сумо ведётся с древних времён, поэтому каждый поединок сопровождается многочисленными ритуалами.
Япония является признанным центром сумо и единственной страной, где проводятся соревнования профессиональных рикиси. В остальном мире существует только любительское сумо.

Современное профессиональное сумо сочетает в себе элементы спорта, единоборства, шоу, традиций и бизнеса.
azelenkov

Объяснение:

Эта задача сводится к задаче поиска пути на графе пространства состояний.

Состояние - положение черепашки на поле - (x, y).

Граф пространства состояний состоит из таких вершин-состояний, их количество N * M.

Переходов между вершинами всего два: R и D.

Здесь можно заметить, что прийти к одним и тем же вершинам мы можем разными путями. Например, путь из (0,0) в (1,1) можно расписать и как RD ((0,0) -> (0,1) -> (1,1)), и как DR ((0,0) -> (1,0) -> (1,1)), но это два разных маршрута.

Однако при неизменном ценовом листе максимальная стоимость и оный маршрут в любой клетке поля значение строго определённое и неизменное во времени.

Это значит, что нам не нужно рассчитывать результат для одинаковых состояний больше одного раза, так как они будут совпадать.

Итак, для каждого состояния у нас есть два правила перехода. Рассчитывая максимальную стоимость маршрута для состояния (x,y) мы следуем алгоритму:

Если можем идти вправо, рассчитываем параметры для этого маршрутаЕсли можем идти вниз, рассчитываем параметры для этого маршрутаВыбираем между путями, если можем идти, или стоим, если уже не можемК выбранному варианту добавляем параметры текущего состояния

Если такой алгоритм применить к состоянию (0,0), то дойдем до (N, M) и получим максимальную цену и маршрут.

Код:

import re

from typing import List

cache = {}

def calculate_max_way_price(x: int, y: int, prices: List[List[int]], m:int, n:int):

   if (x, y) in cache:

       return cache[(x, y)]

   direction = ''

   cost = prices[y][x]

   x_cost, y_cost = -1, -1

   x_way, y_way = '', ''

   if x < m - 1:

       x_cost, x_way = calculate_max_way_price(x + 1, y, prices, m, n)

   if y < n - 1:

       y_cost, y_way = calculate_max_way_price(x, y + 1, prices, m, n)

   if not (x_cost < 0 and y_cost < 0):

       if x_cost > y_cost:

           cost += x_cost

           direction = 'R' + x_way

       else:

           cost += y_cost

           direction = 'D' + y_way

   cache[(x, y)] = (cost, direction)

   return cost, direction

MNtext = input('Enter N M: ')

MN = [int(x) for x in re.findall(r'\d+', MNtext)]

if len(MN) != 2:

   print("Input data error! It is not M and N")

   exit(-1)

N, M = MN[0], MN[1]

MAX_STEP_PRICE = 100

data = input('Enter all numbers separated by spaces. You must type ' + str(M*N) + ' elements:')

data = [int(x) for x in re.findall(r'\d+', data)]

if len(data) != N * M:

   print("Input data error! Too few/many numbers")

   exit(-2)

prices = []

for j in range(N):

   prices.append(data[M*j:M*(j+1)])

print(calculate_max_way_price(0, 0, prices, M, N))

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

язык- c#. создать функцию, вычисляющую наибольший из минимальных элементов строк матрицы а, состоящей из m строк и n столбцов. использовать функцию для вычисления указанных величин в матрице d из 4 строк и 5 столбцов и в матрицы e из 3 строк и 5 столбцов.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

AMR89154331531
Manyaya
PetrovDrozdov1785
Jannadon77
Александровна
ribcage52
yuliyaminullina
familumid
office3
ann328389
f-d-a-14
Овсянкина407
moskvichkabakery56
Елена_Кошевой
Ольга Сергей1822