题目描述
小明参加了学校的趣味运动会,其中的一个项目是:跳格子。地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)
从我做起振
我做起振兴
做起振兴中
起振兴中华
比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。 要求跳过的路线刚好构成“从我做起振兴中华”这句话。
请你帮助小明算一算他一共有多少种可能的跳跃路线呢?
str1 = "从我做起振兴中华" lst = [['从','我','做','起','振'],['我','做','起','振','兴'],['做','起','振','兴','中'],['起','振','兴','中','华']] # 从我做起振 # 我做起振兴 # 做起振兴中 # 起振兴中华 def ds(lst,i,j,b): """ :param lst: 二维列表 :param i: 横坐标 :param j: 竖坐标 :param b: 字符串, :return: """ if i > 3 or j > 4: # 判断数组索引是否越界, return if len(b) == 1: # 当只剩一个字时 "华" 直接停止 global num # 声明全局变量 num += 1 return if b[0] != lst[i][j]: return b = b[1:] ds(lst, i+1, j, b) # 向下走 ds(lst, i, j+1, b) # 向右走 return num = 0 ds(lst, 0, 0, str1) # 调用函数 print(num)