Помогите муравью определить самый экономичный путь - QBasic

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

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

Дано квадратное поле размером 10*10. Этому полю соответствует матрица А(). Матрица задана рандомно. Элементы матрицы указывают высоту этого элемента относительно некоторого нулевого уровня. Из левого верхнего угла вышел муравей. Он хочет пройти в правый нижний угол так, чтобы потратить минимум сил. Если муравей идет по ровной дороге, то он сил не тратит. Но если ему приходится взбираться или спускаться на N единиц вверх или вниз, то он тратит N единиц энергии. Помогите муравью определить самый экономичный путь. Эта программа решает данную задачу На экран выводится исходная матрица и матрица, каждый элемент которой есть сумма модулей разности высот начиная от начального положения муравья. Также указан красным цветом оптимальный путь.
Листинг программы
  1. CLS
  2. RANDOMIZE TIMER
  3. DIM A(11, 11) AS INTEGER
  4. DIM B(11, 11) AS INTEGER
  5. FOR i = 1 TO 10
  6. FOR j = 1 TO 10
  7. A(0, j) = 500
  8. A(11, j) = 500
  9. A(i, 0) = 500
  10. A(i, 11) = 500
  11. B(0, j) = 500
  12. B(i, 0) = 500
  13. B(i, 11) = 500
  14. B(11, j) = 500
  15. NEXT j, i
  16. FOR i = 1 TO 10
  17. FOR j = 1 TO 10
  18. A(i, j) = 19 * RND
  19. NEXT j, i
  20. FOR i = 1 TO 10
  21. FOR j = 1 TO 10
  22. LOCATE i, 3 * j
  23. PRINT USING "###"; A(i, j)
  24. NEXT j, i
  25. FOR i = 1 TO 10
  26. FOR j = 1 TO 10
  27. IF i + j > 2 THEN
  28. IF ABS(A(i - 1, j) - A(i, j)) > ABS(A(i, j - 1) - A(i, j)) THEN
  29. B(i, j) = B(i, j - 1) + ABS(A(i, j - 1) - A(i, j))
  30. ELSE
  31. B(i, j) = B(i - 1, j) + ABS(A(i - 1, j) - A(i, j))
  32. END IF
  33. END IF
  34. NEXT j, i
  35. COLOR 15
  36. FOR i = 1 TO 10
  37. FOR j = 1 TO 10
  38. LOCATE i, 35 + 4 * j
  39. PRINT USING "###"; B(i, j)
  40. NEXT j
  41. NEXT i
  42. i = 1
  43. j = 1
  44. COLOR 12
  45. LOCATE 1, 39
  46. PRINT USING "###"; B(1, 1)
  47. DO
  48. IF B(i, j + 1) < B(i + 1, j) THEN
  49. COLOR 12
  50. LOCATE i, 35 + 4 * (j + 1)
  51. PRINT USING "###"; B(i, j + 1)
  52. j = j + 1
  53. COLOR 15
  54. ELSE
  55. COLOR 12
  56. LOCATE i + 1, 35 + 4 * j
  57. PRINT USING "###"; B(i + 1, j)
  58. i = i + 1
  59. COLOR 15
  60. END IF
  61. LOOP UNTIL i = 10 AND j = 10
  62. END

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

textual
Листинг программы
  1. IF ABS(A(i - 1, j) - A(i, j)) > ABS(A(i, j - 1) - A(i, j)) THEN

Объяснение кода листинга программы

  1. Проверяется условие ABS(A(i - 1, j) - A(i, j)) > ABS(A(i, j - 1) - A(i, j))
  2. Если условие выполняется, то выполняется блок кода, который следует за оператором THEN
  3. В данном случае, в блоке кода нет никаких действий, поэтому этот пункт не применим
  4. Код продолжается выполняться, пока не будет выполнено условие или пока не будет достигнут конец программы

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


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

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

10   голосов , оценка 3.8 из 5

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

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

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