think:
1 首先考虑数据范围,基本得用long long 类型的数组存储
2 考虑时间复杂度,基本用递归会超时,因此选用递推方法
3 考虑能否优化递推,发现无数据插入等影响因素,因此考虑先将需要的数值全部计算出来存储在数组中,之后需要只需调用数组中的对应数据即可
4 分析细节,比如是否为多组输入/输出是否有特殊要求等
5 编译代码,查找是否存在bug
6代入数据,代入样本数据和自己考虑的的临界/特殊等数据
MLE祝你元宵节快乐!
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
一个汤圆串可由长为 1 的 “M汤圆” 和长为 2 的 “LE汤圆” 两种汤圆组成,那么要组成长度为 n 的汤圆串可以有多少种不同的方案?
Input
先输入一个整数 t (1 <= t <= 100) 表示组数。
对于每组数据,输入一个整数 n (0 <= n <= 90),表示汤圆串的长度。
Output
对于每组输入,输出一个整数代表答案。
Example Input
2
1
2
Example Output
1
2
Hint
Author
「2017年寒假集训 阶段测试赛2 - 元宵节专场」MLE_kenan
以下为accepted代码
#include <stdio.h>
void ans(long long a[], int n)
{
a[0] = 0;
a[1] = 1;
a[2] = 2;
for(int i = 3; i <= n; i++)
{
a[i] = a[i-1] + a[i-2];
}
}
int main()
{
int T, n;
long long a[90];
ans(a, 90);
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
printf("%lld\n", a[n]);
}
return 0;
}
/***************************************************
User name: jk160630
Result: Accepted
Take time: 0ms
Take Memory: 104KB
Submit time: 2017-02-13 16:50:44
****************************************************/