http://acm.hdu.edu.cn/showproblem.php?pid=2323

把六边形抽象成坐标进行dp,抽象出的坐标关系必须满足六边形之间的关系。很有趣的一道dp

#include <iostream>
using namespace std ;
int dp[25][25][25] ;
int main()
{
    dp[0][7][7]=1 ;
    for(int i=1 ;i<=14 ;i++)
    {
        for(int j=0 ;j<=14 ;j++)
        {
            for(int k=0 ;k<=14 ;k++)
                dp[i][j][k]=dp[i-1][j-1][k]+dp[i-1][j+1][k]+dp[i-1][j][k-1]+dp[i-1][j][k+1]+dp[i-1][j-1][k-1]+dp[i-1][j+1][k+1] ;
        }
    }
    int t ;
    scanf("%d",&t) ;
    while(t--)
    {
        int n ;
        scanf("%d",&n) ;
        printf("%d\n",dp[n][7][7]) ;
    }
    return 0 ;
}
View Code