推导相关

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

 

posted @ 2018-02-27 01:18  刘小伟  阅读(134)  评论(0编辑  收藏  举报