题目链接:点击打开链接
这是一道递推题目。
我自己是写了五组数据直接发现它是斐波那契然后直接过。
现在回过头再推导一下:
为了方便我们想象是从左往右放。对于每个n,也就是n-1的基础上加了一个空格。多出来的这个空格有两种填法:1.简单的填上长度为一的方块。这时候就有F(n-1)。2.把前面的n-1个调整一下,塞一个长度为二的进去,这个时候就要转换思维,塞了一个长度为二的那剩下n-2个自由填不就是F(n-2)。
所以F(n) = F(n-1)+F(n-2);
另外斐波那契是指数级的,所以80的数据量就要longlong了。
#include <stdio.h>
int main()
{
int n, T;
long long ans[100];
ans[1] = 1;
ans[2] = 2;
for(int i = 3; i < 100; i++)
ans[i] = ans[i - 1] + ans[i - 2];
scanf("%d", &T);
for(int i = 0; i < T; i++)
{
scanf("%d", &n);
printf("%lld\n", ans[n]);
}
return 0;
}