华为OJ 棋盘格子路径

26 篇文章 1 订阅
26 篇文章 0 订阅
请编写一个函数(允许增加子函数),计算n x m的棋
盘格子(n为横向的格子数,m为竖向的格子数)沿着
各自边缘线从左上角走到右下角,总共有多少种走法,
要求不能走回头路,即:只能往右和往下走,不能往左
和往上走。

输入描述:

输入两个正整数


输出描述:

返回结果

输入例子:

2
2

输出例子:

6
# Python
class Node(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

def 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 + 1
while 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值