vari,j,n,m:integer;a:array[1..20,1..20]oflongint;beginread(n,m);fillchar(a,sizeof(a),0);fori:=1tondoa[I,1]:=1;forj:=1tomdoa[1,j]:=1;fori:=2tondoforj:=2tomdoa[I,j]:=a[I,j-1]+a[i-1,j];writeln(a[n,m]);end.要想到达坐标为(i,j)的顶点的话,必定要经过坐标为(i-1,j)的顶点或坐标为(i,j-1)的顶点,设a(I,j)表示从点A到顶点(I,j)的路径总条数,则a(I,j)=a(I,j-1)+a(i-1,j)输入:59输出:495第60页,共86页,星期日,2025年,2月5日街道路径设有一个N*M(1=N=50,1=M=50)的街道,规定行人从A(1,1)出发,在街道上只能向东或北行走。若在此街道中,设置一个矩形障碍区域(包括围住该区域的的街道)不让行人通行,如上图中用“*”表示的部分。此矩形障碍区域用2对顶点坐标给出,如上图中的2对顶点坐标为(2,2),(8,4),此时从A出发到达B的路径有两条。现给出N、M,同时再给出此街道中的矩形障碍区域的2对顶点坐标(x1,y1),(x2,y2),请求出此时所有从A出发到达B的路径的条数。由于在街上只能向东或北方向行走,因此要想达到坐标为(i,j)的顶点的话,必定要经过坐标为(i-1,j)的顶点或坐标为(i,j-1)的顶点,假设从起始顶点到达坐标为(i,j)的顶点的路径总数为a[i,j],则a[i,j]=a[i-1,j]+a[i,j-1]。因此我们可以采用逐行递推的方法来求出从起始顶点到达任意一个顶点的路径总数。第61页,共86页,星期日,2025年,2月5日输入文件hanoi.in为一个正整数n,表示在A柱上放有2n个圆盘。输出文件hanoi.out仅一行,包含一个正整数,为完成上述任务所需的最少移动次数An。【样例1】hanoi.inhanoi.out12【样例2】hanoi.inhanoi.out26【限制】对于50%的数据,1=n=25对于100%的数据,1=n=200【提示】设法建立An与An-1的递推关系式。第28页,共86页,星期日,2025年,2月5日解题思路:递推+高精度1.假设当前要移动A轴的N层,即2N个盘子,则需要将N-1层的2N-2个盘子移动到B轴(辅助轴)上,再将第N层的2个盘子移动到C轴上(目标轴),然后再将那N-1层的2N-2个盘子移动到目标轴,共需要2*An-1+2次。2.递推关系式是:An=2*An-1+2A0=026143062126254…还可以:An=An-1+2n第29页,共86页,星期日,2025年,2月5日vara:array[1..62]ofinteger;{存放大数}i,j,n:integer;f:boolean;beginassign(input,hanoi.in);assign(output,hanoi.out);reset(input);rewrite(output);readln(n);{层数}fori:=1to62doa[i]:=0;{初值}fori:=1tondo{递推n次}beginforj:=1to62doa[j]:=a[j]*2;{先乘2}a[1]:=a[1]+2;{再在个位上加2}forj:=1to62doifa[j]9thenbegin{处理进位}a[j+1]:=a[j+1]+1;a[j]:=a[j]mod10;end;end;f:=false;fori:=62downto1dobeginifa[i