推导相关
1. 台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
def f(n): a, b = 0, 1 for i in range(n): a, b = b, a+b return b
2. 变态台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
def f(n): b = 1 for i in range(n-1): b = 2*b return b
3. 矩形覆盖
我们可以用2*1
的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1
的小矩形无重叠地覆盖一个2*n
的大矩形,总共有多少种方法
def f(n): a, b = 0, 1 for i in range(n): a, b = b, a+b return b
4. 杨氏矩阵查找
在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
def yang(l, target): m = len(l) - 1 i = 0 j = len(l[i]) - 1 while i <= m and j >= 0: val = l[i][j] if target == val: return True elif target > val: i += 1 elif target < val: j -= 1 return False