A37466. 提示信息:有一个由多个小正六边形组成的蜂巢图案,蜂巢外缘各边的小正六边形数量一致,且左右对称。(上图蜂巢图案外缘各边小正六边形数量为2)以下为竖直对称线上小正六边形个数为3、5、7的3个蜂巢图案。编程实现:有一只蜗牛要从竖直对称线顶端的小正六边形处移动到底端的小正六边形中,它每次只能向它所在位置的小正六边形的左下方、正下方、右下方相邻的小正六边形处移动。已知竖直对称线上有N个小正六边形…
填空题
困难
知识点
题目描述
题目描述:
提示信息:
有一个由多个小正六边形组成的蜂巢图案,蜂巢外缘各边的小正六边形数量一致,且左右对称。

(上图蜂巢图案外缘各边小正六边形数量为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
输出描述
输出一个整数,表示蜗牛从竖直对称线顶端移动到底端共有多少条不同的移动路线
样例输入
3
样例输出
11
参考答案
# 参考答案1 递推题 解决位置点的对应问题即可解决
n=int(input())
f=[[0]*(n//2+2)for _ in range(n+2)]
for i in range(1,n//2+2):
f[1][i]=1
for i in range(2,n+1):
f[i][n//2+1]=f[i-1][n//2+1]+2*f[i-1][n//2]
for j in range(n//2,0,-1):
f[i][j]=f[i-1][j]+f[i][j+1]+f[i-1][j-1]
print(f[n][n//2+1])
# 参考答案2
n = int(input())
ls = [[0]*(n + 2) for i in range(n)]
ls[0] = [0] + [1] * n + [0] # 初始化第一行
for i in range(1, n): # 完整构建二维列表
# 中间的小六边形路线数量
ls[i][n//2 + 1] = ls[i - 1][n//2]+ls[i - 1][n//2 + 1]+ls[i - 1][n//2 + 2]
for j in range(1, n//2 + 1):
# 旁边的小六边形路线数量,两边对称
ls[i][n//2 + 1 + j] = ls[i][n//2 + 1 - j] = ls[i][n//2 + j] + ls[i - 1][n//2 + 1 + j] +ls[i - 1][n//2 + 2 + j]
print(ls[n - 1][n//2 + 1])
上一题
下一题