Advertisement
adix155

Untitled

Nov 21st, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace K_2019_Zad5
  8. {
  9. class Program
  10. {
  11.  
  12. static int Nagroda(int[,] d, int[,] p, int[,] s, int m, int n, int[,] kroki)
  13. {
  14. int[,] wynik = new int[n + 1, m + 1];
  15. wynik[0, 0] = 0;
  16. for (int i = 1; i <= n; i++)
  17. {
  18. wynik[i, 0] = wynik[i - 1, 0] + d[i - 1, 0];
  19. kroki[i, 0] = 1;//down
  20. }
  21.  
  22. for (int j = 1; j <= m; j++)
  23. {
  24. wynik[0, j] = wynik[0, j - 1] + p[0, j - 1];
  25. kroki[0, j] = 2;//right
  26. }
  27.  
  28. for (int i = 1; i <= n; i++)
  29. {
  30. for (int j = 1; j <= m; j++)
  31. {
  32. if ((wynik[i - 1, j] + d[i - 1, j] < wynik[i, j - 1] + p[i, j - 1]))
  33. {
  34. if (wynik[i, j - 1] + p[i, j - 1] < wynik[i - 1, j - 1] + s[i - 1, j - 1])
  35. {
  36. wynik[i, j] = wynik[i - 1, j - 1] + s[i - 1, j - 1];
  37. kroki[i, j] = 3;
  38. }
  39. else
  40. {
  41. wynik[i, j] = wynik[i, j - 1] + p[i, j - 1];
  42. kroki[i, j] = 2;
  43. }
  44. }
  45. else
  46. {
  47. if (wynik[i - 1, j] + d[i - 1, j] < wynik[i - 1, j - 1] + s[i - 1, j - 1])
  48. {
  49. wynik[i, j] = wynik[i - 1, j - 1] + s[i - 1, j - 1];
  50. kroki[i, j] = 3;
  51. }
  52. else
  53. {
  54. wynik[i, j] = wynik[i - 1, j] + d[i - 1, j];
  55. kroki[i, j] = 1;
  56. }
  57. }
  58. }
  59. }
  60. return wynik[n, m];
  61. }
  62.  
  63. static void Ścieżka(int[,] kroki, int m, int n)
  64. {
  65. Stack<string> ścieżka = new Stack<string>();
  66. int i = n;
  67. int j = m;
  68. while (kroki[i, j] > 0)
  69. {
  70. if (kroki[i, j] == 1)
  71. {
  72. ścieżka.Push("down");
  73. i--;
  74. }
  75. else if (kroki[i, j] == 2)
  76. {
  77. ścieżka.Push("right");
  78. j--;
  79. }
  80. else
  81. {
  82. ścieżka.Push("skos");
  83. i--;
  84. j--;
  85. }
  86. ;
  87. }
  88. while (ścieżka.Count > 0)
  89. {
  90. Console.WriteLine(ścieżka.Pop()); //Pop usuwa ze stosu
  91. }
  92. }
  93.  
  94. static void Main(string[] args)
  95. {
  96. }
  97. }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement