【发布时间】:2021-05-03 01:32:17
【问题描述】:
我应该在 n*m 矩阵中返回从左上角到右下角的可能路径数。 这是我的代码。
class Solution {
public:
map<pair<int,int>,long long int>mp;
long long int numberOfPaths(int m, int n){
if(n==1 || m==1)
{
return 1;
}
if(mp[make_pair(n,m)]!=0)
return mp[make_pair(n,m)];
mp[make_pair(n,m)]=numberOfPaths(n-1,m)+numberOfPaths(n,m-1);
return mp[make_pair(n,m)];
}
};
我有很多解决这个问题的方法,但我有兴趣找出我的代码中的问题。 输入 19 和 71 我得到了错误的答案。
【问题讨论】:
-
请不要发布截图,尤其是那些没有添加有用信息的截图。您的解决方案使用蛮力递归,这在实践中经常失败。用铅笔和纸来解决这个问题,你很快就会看到一个更快的算法。
-
预期的答案是什么?您的程序返回了什么?
-
对于输入 19 和 71 。预期输出:809936179 和我的代码输出:2418561960739869780
-
@doddi-girish 请参阅下面的答案。对于问题陈述,您的预期输出是错误的。如果对您有帮助并回答了问题,请将其标记为答案。
-
@Doddigirish 您没有看到输出中提到的模数条件吗?如果有,为什么不在问题中提及?
标签: c++ algorithm dynamic-programming