文章

36

粉丝

504

获赞

54

访问

355.0k

头像
题解:你怎么那么熟练啊
P1194
发布于2020年3月12日 03:46
阅读数 8.1k

题目是求斐波那契数列第n项,a1=1,a2=2.

代码的话有两种解决方法

1.函数递归,因为n<=90,所以正常递归的话会超时,这里采用记忆化搜索的方法,rmb数组很好地避免了很多重复计算。

#include<bits/stdc++.h>
using namespace std;
long long rmb[100];
long long f(int n)
{
	if (rmb[n])return rmb[n];
	if (n == 1)return 1;
	if (n == 2)return 2;
	return rmb[n] = f(n - 1) + f(n - 2);
}
int main()
{
	int n;
	cin >> n;
	cout << f(n);
	return 0;
}

2.数组传播,不解释

#include<bits/stdc++.h>
using namespace std;
long long a[100];
int main()
{
	int n;
	cin >> n;
	a[1] = 1;
	a[2] = 2;
	for (int i = 3; i <= n; i++)
		a[i] = a[i - 1] + a[i - 2];
	cout << a[n];
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发