刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

题目描述:

提示信息:

有一个由多个小正六边形组成的蜂巢图案,蜂巢外缘各边的小正六边形数量一致,且左右对称。

(上图蜂巢图案外缘各边小正六边形数量为2)

以下为竖直对称线上小正六边形个数为3、5、7的3个蜂巢图案。

编程实现:

有一只蜗牛要从竖直对称线顶端的小正六边形处移动到底端的小正六边形中,它每次只能向它所在位置的小正六边形的左下方、正下方、右下方相邻的小正六边形处移动。

已知竖直对称线上有N个小正六边形,请计算出蜗牛从竖直对称线顶端移动到底端共有多少条不同的移动路线。

例如:N = 3,竖直对称线上有3个小正六边形,如下图:

蜗牛从竖直对称线顶端的小正六边形处(1号处)移动到另一端的小正六边形中(7号处)共有11条不同的路线。

11条不同的路线分别为:

(1->2->5->7)、(1->2->4->7)、(1->2->4->5->7)、(1->2->4->6->7)、(1->4->5->7)、(1->4->7)、(1->4->6->7)、(1->3->4->5->7)、(1->3->4->7)、(1->3->4->6->7)、(1->3->6->7)。

【输入描述】

输入一个正整数N(2<N<30,N为奇数),表示图案上竖直对称线上小正六边形的个数

【输出描述】

输出一个整数,表示蜗牛从竖直对称线顶端移动到底端共有多少条不同的移动路线


【样例输入】

3

【样例输出】

11


使用微信搜索喵呜刷题,轻松应对考试!

答案:

根据题目描述,蜗牛从竖直对称线顶端移动到底端共有多少条不同的移动路线可以通过动态规划来解决。可以使用一个二维数组dp来保存中间结果,其中dp[i][j]表示蜗牛从竖直对称线顶端到第i个小正六边形,并且选择了j条左移路线(不包括正下方的路线)的方案数。根据蜗牛的移动规则,可以得到状态转移方程:dp[i][j] = dp[i-1][j] + dp[i-2][j-1]其中,dp[i-1][j]表示蜗牛从竖直对称线顶端到第i-1个小正六边形,并且选择了j条左移路线(不包括正下方的路线)的方案数,dp[i-2][j-1]表示蜗牛从竖直对称线顶端到第i-2个小正六边形,并且选择了j-1条左移路线(不包括正下方的路线)的方案数,然后正下方走一步到达第i个小正六边形。初始条件为:dp[1][0] = 1,表示只有一条路线,即蜗牛直接走到正下方的小正六边形;dp[2][0] = 1,dp[2][1] = 1,表示有两条路线,即蜗牛可以走到正下方或者左移一步再走到正下方的小正六边形。最后,蜗牛从竖直对称线顶端到第N个小正六边形的方案数即为dp[N][0] + dp[N][1] + ... + dp[N][(N-1)/2]。

解析:

【喵呜刷题小喵解析】:
本题是一道经典的动态规划问题,可以通过状态转移方程和初始条件来求解。由于蜗牛每次只能向它所在位置的小正六边形的左下方、正下方、右下方相邻的小正六边形处移动,因此可以使用一个二维数组dp来保存中间结果。根据蜗牛的移动规则,可以得到状态转移方程,其中dp[i][j]表示蜗牛从竖直对称线顶端到第i个小正六边形,并且选择了j条左移路线(不包括正下方的路线)的方案数。初始条件为dp[1][0] = 1,dp[2][0] = 1,dp[2][1] = 1,表示只有一条或者两条路线。最后,蜗牛从竖直对称线顶端到第N个小正六边形的方案数即为dp[N][0] + dp[N][1] + ... + dp[N][(N-1)/2]。
创作类型:
原创

本文链接:题目描述: 提示信息: 有一个由多个小正六边形组成的蜂巢图案,蜂巢外缘各边的小正六边形数量一致,且左

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share