编程题——棋盘走法


编程题——棋盘走法


题目描述:
请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。
输入描述:
输入两个正整数

输出描述:
返回结果

示例1
输入
2
2
输出
6


程序代码如下:



#include 
using namespace std;

/*类似走迷宫的思想,从尾到头分解分析就简单很多,直接用递归解决
 *如果n或m为1,即只有一行或一列,则走法有n+m种;
 *如果n和m都大于1,则从右下角的格子出发,有向左和向上两条路径
 *	通过递归求走到(n-1,m)和(n,m-1)的路径数之和
*/
int PathNum(int n, int m)
{
	if (n > 1 && m > 1)
		return PathNum(n - 1, m) + PathNum(n, m - 1);
	else if (((n == 1) && (m >= 1)) || ((n >= 1) && (m == 1)))
		return n + m;
	else //格子数为0,直接返回0
		return 0;
}

int main()
{
	int n, m;
	while (cin >> n >> m)
		cout << PathNum(n, m) << endl;
	return 0;
}


程序运行结果如下:


编程题——棋盘走法_第1张图片

你可能感兴趣的:(算法,编程题de世界)