Tiling
https://vjudge.net/problem/FZU-1147
经过自己手推可以的出来f[i]=f[i-1]+2*f[i-2];而且是大数,开两个数组控制格式
#include<stdio.h>
#include<string.h>
const int maxn=300;
int a[maxn],b[maxn],c[maxn];
int main()
{
int n,k;
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
if(n==0||n==1)
printf("1");
else if(n==2)
printf("3");
a[1]=1;
b[1]=3;
for(int i=1; i<=n-2; i++)
{
int d=0;
for(int j=1; j<maxn; j++)
{
int s=a[j]*2+b[j]+d;
c[j]=s%10;
d=s/10;
}
for(int j=1; j<maxn; j++)
{
a[j]=b[j];
b[j]=c[j];
}
}
for(k=maxn-1; k>=1; k--)
{
if(c[k])
break;
}
for(int i=k; i>=1; i--)
{
printf("%d",c[i]);
}
printf("\n");
}
return 0;
}
Tri Tiling
https://vjudge.net/problem/HDU-2501
这道题遇上道题相似却麻烦了很多,我看了大牛的博客,感觉人家已经推的很好了,直接上博客
http://www.cnblogs.com/yuyixingkong/archive/2015/07/15/4648163.html
两道题相似却大有不同,第二道题我也是懵懂,感觉自己推不出来