pascal路线

来源:百度知道 编辑:UC知道 时间:2024/06/19 19:20:58
设有一个N*M(l <=N <=50, l <=M <=50)的街道(如图一):

5┌—┬—┬—┬—┬—┬—┬—┬—┐(9,5)
│ │ │ │ │ │ │ │ │
4├—┼—┼—┼—┼—┼—┼—┼—┤
│ │*│*│*│*│*│*│ │
西 3├—┼—┼—┼—┼—┼—┼—┼—┤ 东
│ │*│*│*│*│*│*│ │
2├—┼—┼—┼—┼—┼—┼—┼—┤
│ │ │ │ │ │ │ │ │
1└—┴—┴—┴—┴—┴—┴—┴—┘
A(1,1)1 2 3 4 5 6 7 8 9
南 (图一)
规定行人从A(1,1)出发,在街道上只能向东或北方向行走。 图二为N=3,M=3的街道图,从A出发到达B共有6条可供行走的路径:
A6 A7 B
┌—┬—┐
A3├—┼—┤A5
└—┴—┘
A A1 A2
1. A-A1-A2-A5-B 2. A-A1-A4-A5-B 3. A-A1-A4-A7-B 4. A-A3-A4-A5-B 5. A-A3-A4-A7-B 6. A-A3-A6-A7-B 若在N*M的街道中,设置一个矩形障碍区域(包括围住该区域的的街道)不让行人通行,如图一中用“*”表示的部分。此矩形障碍区域用2对顶点坐标给出,图一中的2对顶点坐标为:(2,2),(8,4),此时从A出发到达B的路径仅有两条

program LuXian;
const
ZhangAi=maxlongint*2;
var
p:array [1..100,1..100] of cardinal; {同来储存路线的}
n,m,x1,y1,x2,y2,i,j:word;
begin
readln(n,m);
readln(x1,y1,x2,y2);
for i:=1 to n do p[i,1]:=1;
for j:=1 to m do p[1,j]:=1;
for i:=x1 to x2 do
for j:=y1 to y2 do
p[i,j]:=ZhangAi;
for i:=2 to n do
for j:=2 to m do
if p[i,j]=ZhangAi
then p[i,j]:=0
else p[i,j]:=p[i-1,j]+p[i,j-1]; {这就是算法!}
writeln(p[n,m]);
end.

谢谢!

悬赏分:0 ...
- -!!!
这分注定你得不到好答案

我问一下,你是不知道算法呢还是只是不知道怎么用pascal实现?如果是后者的话就当我没回答过吧,因为我只知道怎么算这个,不会pascal的语法。。