上楼梯解答错误?!

wangjiajian  •  2年前


#include <bits/stdc++.h> using namespace std;

int n; long long visited[80] = {0, 1, 2, 4};

long long dfs(int x) {

if(!visited[x])
	visited[x] = dfs(x-1)+dfs(x-2)+dfs(x-3);
return visited[x];

}

int main() {

while(cin>>n)
	cout << dfs(n) << '\n';
return 0;

}


评论:

要用unsigned long long


wangjiajian  •  2年前

有点小题大作了吧


_JF_  •  2年前

直接用递归不方便吗(其实用动归也可以)


_JF_  •  2年前

这题不是DP入门题吗?

不对,应该可以是直接递推的。

f[i] = f[i - 1] + f[i - 2] + f[i - 3]

f[0] = 1

f[1] = 1

f[2] = 2

哦你注意一下,没有台阶的时候,他有且仅有一种方案,就是一步也不走。

如果要改进的话可以直接用矩阵快速幂解决哦。


_  •  2年前