Найти минимальную сумму элементов двумерного массива - 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]);