如何解决Fibonacci系列的Binet矩阵的C ++实现
对于以下代码,我收到此错误:没有从'int'到'const std :: vector
class Solution {
public:
int climbStairs(int n) {
vector<vector<int>>B{{1,1},{1,0}};
for(int i=1;i<n;i++){
B=mult(B);
}
return(B[0][0]);
}
int mult(vector<vector<int>>B){
vector<vector<int>>ans{{0,0},{0,0}};
ans[0][0]=B[0][0]+B[1][0];
ans[0][1]=B[0][1]+B[1][1];
ans[1][0]=B[0][0];
ans[1][1]=B[0][1];
return (vector<vector<int>>ans);
}
};
解决方法
您从mult
返回了错误的类型。您应该返回std::vector<std::vector<int>>
,而不是int
。
#include <vector>
class Solution {
public:
int climbStairs(int n) {
std::vector<std::vector<int>>B{{1,1},{1,0}};
for(int i = 1; i < n; i++){
B = mult(B);
}
return B[0][0];
}
// pass by const& instead of value to avoid a copy here
std::vector<std::vector<int>> mult(const std::vector<std::vector<int>> &B) {
// simplify so that we don't need ans
return {
{B[0][0] + B[1][0],B[0][1] + B[1][1]},{B[0][0],B[0][1]}
};
}
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。