[TOC]
题目:
m×n的方格,如下图所示,从方格的左下角A走到方格的右上角B,请求出所有的路径方法总和。
解答:
1*1方格的情况
从左上角到右下角走法,总共有2种走法。即m=1,n=1
S(1,1)=2
2*2方格的情况
从左上角到右下角走法,总共有6种走法。即m=2, n=2
S(2,2)=S(2,1)+S(1,2)=3+3=6
m*n方格的情况
从左上角到右下角走法,总共有S(m,n)种走法。
S(m,n)=S(m,n-1)+S(m-1,n)
由以上得到推导公式:
S(m,n)=S(m,n-1)+S(m-1,n)
C语言函数实现的程序
int getSumSteps(int m, int n)
{
if(m <=0 || n<= 0){
return -1;
}
if(m == 1 && n > 0){
return n+1;
}
if(n == 1 && m > 0){
return m+1;
}
// 递归调用
return getSumSteps(m-1, n) + getSumSteps(m, n-1);
}