http://www.lydsy.com/JudgeOnline/problem.php?id=1616
循环写4msAC,记忆化搜索TLE,到底哪里出问题?实在查不出来。

Codeprogram Travelling;
const dx:array[1..4] of longint=(-1,1,0,0);
dy:array[1..4] of longint=(0,0,1,-1);
maxn=100;maxt=15;Filename='Travelling';
var f:array[0..maxn+1,0..maxn+1,0..maxt] of longint;
map:array[0..maxn+1,0..maxn+1] of boolean;
i,j,n,m,t,r1,r2,c1,c2,tmp,k,l,nx,ny:longint;
ch:char;
procedure DFS(x,y,t:longint);
var nx,ny,tmp,i:longint;
begin tmp:=0;
if(F[x][y][t]<>0)or(t<=0)then exit;
for i:=1 to 4 do begin
nx:=x+dx[i];ny:=y+dy[i];
if map[nx][ny]
then begin
DFS(nx,ny,t-1);
inc(tmp,F[nx][ny][t-1]);
end;end;
F[x][y][t]:=tmp;
end;
begin
fillchar(map,sizeof(map),false);
readln(N,M,T);
for i:=1 to N do begin
for j:=1 to M do begin
read(ch);
if ch='.' then
map[i][j]:=true;
end;readln;end;
readln(R1,C1,R2,C2);
F[R1][C1][0]:=1;
for k:=1 to T do
for i:=1 to n do
for j:=1 to m do begin
if not map[i][j]
then continue;
tmp:=0;
for l:=1 to 4 do
begin
nx:=i+dx[l];ny:=j+dy[l];
if map[nx][ny] then
tmp:=tmp+F[nx][ny][k-1];
end;
f[i][j][k]:=tmp;
end;
writeln(F[R2][C2][T]);
end.