Нахождение кратчайшего пути C# (windows form)
Произошло радиоактивное заражение местности.Составлена карта зараженности.Она представляет собой прямоугольную таблицу N x M, в клетках которой записана зараженность соответствующего участка. Требуется найти путь из левой верхней клетки в правую нижнюю клетку с минимальной суммарной дозой радиации.
Например матрица.
0 2 2 2 2 2
1 0 1 0 0 1
2 2 2 0 2 2
2 2 2 0 1 0
Ну и вот она(программа) должна найти этот путь. Потом 0 + 1 + 0 + 1+ 0 + 0 + 0 + 1 + 0 = 3
И потом сверяла если вы вписали в textbox 3 всё верно иначе проиграл.
Мне очень надо сделать эту задачу а то на 2 курс не перейду помогите, буду очень признателен.
C#(windows form)
Есть готовая на паскале если кому будет легче:
Const InputFile='Input.txt' ;
OutputFile='Ouput.txt' ;
MaxN=30;
Dx: Array[1..4] Of Integer=(0, 0,-1, 1);
Dy: Array[1..4] Of Integer=(-1, 1, 0, 0);
Var A, Mn: Array[1..MaxN, 1..MaxN] Of Integer;
N,M, res:Integer;
i,j:Integer
Procedure GetMin(Var si,sj:Integer);
Var i,j,min:Integer;
Begin
min=:MaxInt; si:=1; sj:=1;
For i:=1 To N Do
For i:=1 To M Do
If (Mn[i,j]>0) And (Mn[i,j]
si:=i;sj=j;min:=Mn[i,j]
End
End;
Procedure Solve;
Var i,j,k,si,sj,ni,nj:Integer;
Begin
Mn[1, 1]:=A[1, 1];
For j:=1 To N*M-1 Do Begin
GetMin (si, sj);
For k:=1 To 4 Do Begin
ni:=si+Dx[k];nj:=sj+Dy[k];
If (ni0) And (nj0) And (Mn[ni,nj]>-0) Then Begin
If (Mn[ni,nj]-0) Or (Mn[si,sj]+A[ni,nj]
Then Mn[ni, nj]:=Mn[si,sj]+A[ni,nj];
End
End;
Mn[si,sj]:=-Mn[si,sj]
End;
res:=Abs(Mn[N,M])
End;
Begin
Assing (Imput, InputFile);Reset(Input);
Read(N, M);
For i:=1 To N Do
For j:=1 To M Do Read(A[i,j]);
Close(Input);
FillChar(Mn, SizeOf(Mn),0);
Solve;
Assing(Output, OutputFile);Rewrite(Output);
WriteLn(res);
Close(Output)
End.