1、题目描述
有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。
输入描述:
输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。
输出描述:
输出包括一行,为走法的数目。
示例1
输入
3 2
输出
10
2. 思路分析
该题与“走台阶“的题目异曲同工。
根据题目描述,走格时只能向下走或向右走。则假若目标格为(x,y),那么走向目标节点的走法就有两种,分别是:
(1)由(x-1,y)格向下走
(2)由(x,y-1)格向右走
所以,对与边界的格子来说,都只有上述的这两种走法,所以走向(n,m)格的总走法数目,就是【其上方格点的走法数目】与【其左方格点的走法数目】的和。此时假设函数f(x,y)表示走向格点(x,y)的走法数目,那么能够得到:
f(x,y)=f(x−1,y)+f(x,y−1)
3.Python实现
# 递归
# f(x,y) = f(x-1,y)+f(x,y-1) x, y = map(int, input().split())
def fun(x,y):
if x==1 or y==1:
return x+y
else:
return fun(x-1,y)+fun(x,y-1) ret = fun(x,y)
print(ret)
4、map函数:一种映射函数
nums,target = map(int,input().split())
print(nums,target) # 输入 5 6
# 输出 5 6