题解 | #走方格的方案数#
走方格的方案数
http://www.nowcoder.com/practice/e2a22f0305eb4f2f9846e7d644dba09b
递归解法
思路:
函数功能:返回走法数。
结束条件:找下规律不难发现:当n或m有一个为1时,走法数等于较大的那个数加一,所以结束条件可以设置为if(n==1||m==1)
return (n+1>m+1)?n+1:m+1;
等价关系:要走到右下角必须经过最后一个方格的左下角或右上角,所以可以把所有走法分为走到最后一个方格的左下角和走到最后一个方格的右上角,即f(n,m)=f(n,m-1)+f(n-1,m)。
int main(void)
{
int n,m;
while(scanf("%d %d",&n,&m)!=EOF)
{
printf("%d\n",f(n,m));
}
return 0;
}
int f(int n,int m)
{
if(n==1||m==1)
return (n+1>m+1)?n+1:m+1;
else
return f(n-1,m)+f(n,m-1);
}