【递推】迷宫路径
题目:迷宫路径 rqnoj158
题目描述
猩猩来到一个点(1,1),想吃右下角(N,N)的香蕉,规定只能往下走或者往右走,试问有多少种走法?
输入格式
第一行为一个整数N(N<=20)
以下是一个N*N的正方形表示迷宫
输出格式
仅有一个数,表示路径总数,如果走不通,则输出0
样例输入
样例输出
题目就不说了,深搜很经典的题目,但是此题范围为n<=20,所以深搜肯定要超时,然而只要求得出方案总数,不需要每个方案,所以可以用递推来解决
基本思路如下
Pascal Code
program rqnoj158; var n:longint; map,f:array[0..50,0..50] of longint; procedure init; begin assign(input,'rqnoj158.in'); assign(output,'rqnoj158.out'); reset(input); rewrite(output); end; procedure outit; begin close(input); close(output); halt; end; procedure readdata; var i,j:longint; begin read(n); fillchar(map,sizeof(map),255); fillchar(f,sizeof(f),0); for i:=1 to n do for j:=1 to n do begin read(map[i,j]); end; end; procedure main; var i,j:longint; begin f[1,1]:=1; for i:=1 to n do for j:=1 to n do begin if map[i,j]<>0 then continue; if (i=1)and(j=1) then continue; if (map[i-1,j]<>0)and(map[i,j-1]=0) then f[i,j]:=f[i,j-1]; if (map[i-1,j]=0)and(map[i,j-1]<>0) then f[i,j]:=f[i-1,j]; if (map[i-1,j]=0)and(map[i,j-1]=0) then f[i,j]:=f[i-1,j]+f[i,j-1]; end; writeln(f[n,n]); end; begin init; readdata; main; outit; end.
..... 转载请注明出处 ..... http://oijzh.cnblogs.com ..... by jiangzh