ACM PKU 2663 Tri Tiling 简单的动态规划 有趣

ACM PKU 2663 Tri Tiling 简单的动态规划 有趣

http://acm.pku.edu.cn/JudgeOnline/problem?id=2663
开始想复杂了,其实是个递推,或者说是个简单的动态规划

T(2)=3 ;
T(0)=1;
T(2*k-1)=0
T(2*k)=3*T(2*k-2)+2*(T(2*k-4)+T(2*k-6)+..+T(2) )
#include  < stdio.h >
long  T[ 31 ];
long  t( int  n)
{
    
int i;
    
if(n==2)return 3;
    
if(T[n]!=0)return T[n];
    
else 
    
{
        T[n]
=3*t(n-2)+2;
        
for(i=n-4;i>=2;i=i-2)
         T[n]
+=2*t(i);
    }

    


    
return T[n];
}

void  main()
{
    
int input;
    scanf(
"%d",&input);
    
while(input!=-1){
        
if(input%2==1)printf("0\n");
        
else if(input==0)printf("1\n");
        
else printf("%ld\n",t(input));
        scanf(
"%d",&input);
    }

}

你可能感兴趣的:(ACM PKU 2663 Tri Tiling 简单的动态规划 有趣)