路径问题 #1
今天笔试题的第二道编程题,第一眼我就看出来这题得用递归,但是我枚举数据的时候发现数据是有规律性的,反正当时距离笔试时间还早我就慢慢推,然后,我果然还是不适合找规律。题目难度简单,改进优化方法没想出来,就纯当记录。
问题描述:
从[1,1]位置开始,走向[m,n]位置,只可以向右向下走,问有多少种可能性
我的思路
递归,我觉得算是典型的递归题了,难度简单。
不过因为数据量限制在了1<=m==n<=100,随意对于大数据的运行效果没有实测,但是按照递归管理都不太行,可以换成非递归方式。
代码
class Solution {
public:
int PathsCnt(int m, int n) {
// write code here
return path(1, 1, m, n);
}
int path(int a, int b, int m, int n) {
if(a==m && b==n)
return 1;
if(a==m)
return path(a, b+1, m, n);
else if(b==n)
return path(a+1, b, m, n);
else
return path(a+1, b, m, n) + path(a, b+1, m, n);
}
};