华为OJ 棋盘格子路径

来源:互联网 发布:大数据分析研判 编辑:程序博客网 时间:2024/05/16 06:27
请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入描述:输入两个正整数输出描述:返回结果输入例子:22输出例子:6
# Pythonclass Node(object):    def __init__(self, x, y):        self.x = x        self.y = ydef bfs(n,m):    if n<=0 or m <= 0:        return    # bfs初始化,这里不需要visited数组    queue = []    step = [[0,1],[1,0]]    count = 0    queue.append(new Node(0,0))     while queue: #当队列不为空的时候        local = queue.pop()        count += 1        for i in range(len(step)):            next = Node(local.x+step[i][0], local.y + step[i][1])            if 0 <= next.x < n and 0 <= next.y < m:                queue.append(next)    print count + 1while True:    try:        n, m = raw_input().split()         bfs(n,m)    except:        break
#递归# 1*m的格子有m+1种走法# n*1...    n+1种走法def num(n,m):    if n<=0 or m <= 0:        return    if n==1:        return m+1    elif m == 1:        return n+1    else:        return num(n-1,m) + num(n, m-1)
0 0
原创粉丝点击