问题描述:
一个蜂巢单位为一个六边形, 蜂巢由单位六边形组合而成。 一只小蜜蜂由远点出发,走n步后回到原点,一共有多少种走法?
解决方案:
标准dp问题。
关键 建立斜坐标系
矩阵dp[n][i][j]保存在第n步时到达点 ij 的走法总数 , dp[n][i][j]= dp[n-1][i+1][j]+dp[n-1][i-1][j]+dp[n-1][i][j+1]+dp[n-1][i][j-1]+dp[n][i+1][j+1]+dp[n][i-1][j-1];
#include <iostream>
#include <cstring>
using namespace std;
int dp[17][30][30],sta_r = 15,sta_c = 15;
int move[6][2] = {
{-1,-1},{0,-1},{1,0},{1,1},{0,1},{-1,0}};
int main()
{
int t,n,i,r,c,k;
cin>>t;
memset(dp,0,sizeof(dp));
dp[0][sta_r][sta_c] = 1;