zoukankan      html  css  js  c++  java
  • 递归之求二维数组的最短路径、给定一个整数和一个数组任意选择数组中的数累加能否得到该整数

    1.给你一个二维数组,二维数组中的每个数都是正数,要求从左上角走到右下角,每一步只能向右或向下沿途经过的数字要累加起来,返回最小路径和

     1 # i,j确定则返回值固定
     2 def walk(matrix, i, j):
     3     if i == len(matrix)-1 and j == len(matrix[0])-1:   # 到达右下角,返回节点值
     4         return matrix[i][j]
     5     if i == len(matrix)-1:                                 # 到达最后一行
     6         return matrix[i][j] + walk(matrix, i, j+1)        # 只能向右走
     7     if j == len(matrix[0])-1:                             # 到达最后一列
     8         return matrix[i][j] + walk(matrix, i+1, j)        # 只能向下走
     9     right = matrix[i][j] + walk(matrix, i, j+1)     # 右边位置到右下角的最短路径和
    10     down = matrix[i][j] + walk(matrix, i+1, j)      # 下边位置到右下角的最短路径和
    11     return min(right, down)

    2.给你一个数组arr,和一个整数aim。如果可以任意选择arr中的数字,能不能累加得到aim,返回true 或者 false

    1 # 关联求字符串的全部子序列
    2 def isSum(arr, i, sum, aim):
    3     if i == len(arr):
    4         return sum == aim
    5     return isSum(arr, i+1, sum, aim) or isSum(arr, i+1, sum+arr[i], aim)
  • 相关阅读:
    按钮设计
    图标设计
    滤镜与通道
    路径、形状工具与选区
    类的无参方法
    类和对象
    阅读器关闭时尝试调用Read无效时的解决方法
    进入ASP .net mvc的世界
    linux命令-vim
    linux命令-分区表fstab
  • 原文地址:https://www.cnblogs.com/icekx/p/9149333.html
Copyright © 2011-2022 走看看