Нахождение кратчайшего пути C# (windows form)

Михаил11 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
22.06.2014

Произошло радиоактивное заражение местности.Составлена карта зараженности.Она представляет собой прямоугольную таблицу 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.

Заявки фрилансеров