| 比赛 | 暑假培训B班二测 | 评测结果 | AAAAAA | 
    | 题目名称 | 返回住所 | 最终得分 | 100 | 
    | 用户昵称 | bingo | 运行时间 | 0.001 s | 
    | 代码语言 | Pascal | 内存使用 | 0.17 MiB | 
    | 提交时间 | 2012-07-22 11:24:40 | 
显示代码纯文本
const
 s:array[1..4,1..2]of integer=((0,-1),(-1,0),(0,1),(1,0));
var
 r,c,k,i,j,t:integer;
 a:array[1..5,1..5]of char;
 b:array[0..6,0..6]of boolean;
procedure can(y,x,l:integer);
 var
  i,j:integer;
 begin
  b[y,x]:=false;
  if (x=c)and(y=1)and(l<=k) then begin t:=t+1;b[y,x]:=true;exit;end;
  if (l>=k)and((x<>c)or(y<>1)) then begin b[y,x]:=true;exit;end;
  for i:=1 to 4 do
   if b[y+s[i,1],x+s[i,2]] then can(y+s[i,1],x+s[i,2],l+1);
  b[y,x]:=true;
 end;
begin
 assign(input,'backbarn.in');
 assign(output,'backbarn.out');
 reset(input);
 rewrite(output);
 readln(r,c,k);
 for i:=1 to r do
  begin
  for j:=1 to c do
   begin
   read(a[i,j]);
   if a[i,j]='.' then b[i,j]:=true;
   end;
  readln;
  end;
 can(r,1,1);
 write(t);
close(input);
close(output);
end.