2663 tri tiling

这个题是2506的加强版,思路是一样的。

独立的可递推情况变得更多。

独立2列时有3种,而独立4列,6列,8列……所有偶数列都有两种

于是这个递推公式复杂一些

f(n)=3*f(n-2)+2*f(n-4)+2*f(n-6)+2*f(n-8)…………

这两个题f(0)都是1,很有意思~。一开始就这里WA了。

#include<iostream>
using namespace std;
//f(n)=3*f(n-2)+2*f(n-4)+2*f(n-6)……
int f[50];
int main()
{
int i,j,t;
f[0]=1;
f[1]=0;
f[2]=3;
for(i=4;i<=30;i++)
{
   f[i]=3*f[i-2];
   for(j=2; ;j++)
   {
    t=i-2*j;
    if(t<0)break;
    else
     f[i]+=2*f[t];
   }
}
while(cin>>t)
{
if(t==-1)break;
cout<<f[t]<<endl;
}
}

阅读全文
类别: Poj  查看评论

你可能感兴趣的:(2663 tri tiling)