Найти минимальную сумму элементов двумерного массива - C#

Узнай цену своей работы

Формулировка задачи:

Вводим сначала кол-во строк и столбцов, потом сами элементы. Нужно с левого верхнего элемента двумерного массива до правой нижней найти минимальную сумму элементов массива. Можно перемещаться только вправо, либо вниз (влево и вверх перемещаться нельзя). Пример: Ввод:
4 5 1 1 1 1 1 4 2 3 6 8 2 4 8 3 50 4 2 1 8 7
Вывод:
26
Начал делать, задал сначала сам массив, дальше было много попыток, пытался находить в каждой строке минимум и складывать, то складывал вообще всё и пытался минимум найти, всё далеко не то. Чтобы не позориться, вот только начало кода, дальше как быть - не знаю
string[] line = Console.ReadLine().Split();
            int n = int.Parse(line[0]);
            int m = int.Parse(line[1]);
            int[,] a = new int[n, m];           
            for (int i = 0; i < n; i++)
            {
                string[] line2 = Console.ReadLine().Split();
                for (int j = 0; j < m; j++)
                {
                    a[i, j] = int.Parse(line2[j]);
                }
            }
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                   //пытался тут сделать программу  
                }
            }
Помогите сделать правильно, заранее спасибо

Решение задачи: «Найти минимальную сумму элементов двумерного массива»

textual
Листинг программы
var array = new[,]
{
    { 1, 1, 1, 1, 1 },
    { 4, 2, 3, 6, 8 },
    { 2, 4, 8, 3, 50 },
    { 4, 2, 1, 8, 7 }
};
 
var sums = new int[array.GetLength(0), array.GetLength(1)];
 
// Верхнее левое значение
sums[0, 0] = array[0, 0];
 
// Первая колонка
for (var i = 1; i < array.GetLength(0); i++)
{
    sums[i, 0] = sums[i - 1, 0] + array[i, 0];
}
 
// Первая строка
for (var j = 1; j < array.GetLength(1); j++)
{
    sums[0, j] = sums[0, j - 1] + array[0, j];
}
 
// Остальная часть таблицы
for (var i = 1; i < array.GetLength(0); i++)
{
    for (var j = 1; j < array.GetLength(1); j++)
    {
        sums[i, j] = Math.Min(sums[i - 1, j], sums[i, j - 1]) + array[i, j];
    }
}
 
for (var i = 0; i < array.GetLength(0); i++)
{
    for (var j = 0; j < array.GetLength(1); j++)
    {
        Console.Write("{0,3}", sums[i, j]);
    }
    Console.WriteLine();
}
 
Console.WriteLine(sums[sums.GetLength(0) - 1, sums.GetLength(1) - 1]);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.462 из 5
Похожие ответы