18.走方格的方案数

题目描述

请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。

本题含有多组样例输入。

输入描述:

每组样例输入两个正整数n和m,用空格隔开。(1≤n,m≤8)

输出描述:

每组样例输出一行结果

示例1

输入

2 2

1 2

输出

6

3

 

解题思路

首先注意要循环输入

while(cin>>m>>n)

本题使用递归解决

从(0,0)走到(m,n)的方案数

等于从(0,0)走到(m-1,n)和(m,n-1)的方案数相加

继续递归

因为只能往右和往下走

那么(0,n)只有一种方案-因为只能往左走

(m,0)也只有一种方案-因为只能往下走

 

#include
using namespace std;
int pathnum(int n, int m)
{
	if (m == 0 || n == 0)
		return 1;
	return pathnum(n, m - 1) + pathnum(n - 1, m);
}
int main()
{
	int m, n;
	//循环输入
	while (cin >> m >> n)
	{
		cout << pathnum(m, n) << endl;
	}
	return 0;
}

 

你可能感兴趣的:(LCMR,cpp,leetcode,递归算法)