Поиск кратчайшего пути в матрице - C#

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

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

Привет всем, есть задание: "Считать из файла input3.txt двумерный массив. Каждая ячейка имеет вес указанный в матрице, необходимо найти кратчайший маршрут из правого верхнего в левый нижний. Результат записать в файл output3.txt." Ребята, мозг себе выел, может кто-нибудь подсказать, описать алгоритм нахождения пути? Препод говорит что как-то через рекурсию можно сделать. Буду очень благодарен если кто-нибудь отпишет. И да, как бы "ходить" можно только вниз и вверх.
Тьфу влево и вниз.

Решение задачи: «Поиск кратчайшего пути в матрице»

textual
Листинг программы
  1.  static void Main(string[] args)
  2.         {
  3.             const int  size =   4;
  4.             int index = 0;
  5.             List<int> list = new List<int>();
  6.             Random random = new Random();
  7.             int[,] arr2 = new int[size, size];
  8.            
  9.             for (int i = 0; i < size; i++)
  10.             {
  11.                 for (int j = 0; j <size; j++)
  12.                 {
  13.                     arr2[i, j] = random.Next(1, 10);
  14.  
  15.                     Console.Write(" " + arr2[i, j]);
  16.                 }
  17.                 Console.WriteLine();
  18.             }
  19.  
  20.             Console.WriteLine();
  21.             Rekursiya(arr2, size, size, list);
  22.            // минимальное число, и значение его  jго индекса
  23.             foreach (var VARIABLE in list)
  24.             {
  25.                 for (int i = list.Count-1; i >0; i--)
  26.                 {
  27.                     if (list[i] < VARIABLE)
  28.                     {
  29.                         index = i;
  30.                     }
  31.                 }
  32.             }
  33.  
  34.             Console.WriteLine("Кратчайший путь ");
  35.  
  36.             for (int i = 0; i < size; i++)
  37.             {
  38.                 for (int j = (list.Count - 1 - index); j == list.Count - 1 - index; j--)
  39.                 {
  40.                     Console.WriteLine(arr2[i,j] + " " + i + "," + j);
  41.                 }
  42.             }
  43.             Console.ReadLine();
  44.         }
  45. // Собственно сама рекурсия.
  46.            static void  Rekursiya(int[,] arr,int x,int y, List<int> list )
  47.         {
  48.             int temp ;      
  49.          
  50.                 temp = 0;
  51.  
  52.                 for (int i = 0; i < y; i++)
  53.                 {
  54.                     for (int j = x - 1; j >= 0; j--)
  55.                     {
  56.                         temp += arr[i, j];
  57.  
  58.                         break;
  59.                     }                
  60.                 }
  61.                 if (list.Count < y)
  62.                 {
  63.                     list.Add(temp);
  64.                 }
  65.  
  66.             if (x > 1)
  67.             {
  68.                 x--;
  69.                 Rekursiya(arr, x, y, list);
  70.             }
  71.         }

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут