蜂巢问题的dp解决

该博客介绍了如何运用动态规划(DP)方法解决蜂巢中蜜蜂从起点出发,走n步后返回原点的不同路径数量问题。通过建立斜坐标系,并用矩阵DP记录每一步的状态,最终得出答案。代码实现中包含了核心的转移方程和遍历过程。
摘要由CSDN通过智能技术生成

问题描述:

   一个蜂巢单位为一个六边形, 蜂巢由单位六边形组合而成。 一只小蜜蜂由远点出发,走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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值