|
发表于 2016-5-17 12:56:58
|
显示全部楼层
本帖最后由 老忘 于 2016-5-17 18:15 编辑
如果楼主不给个找规律的提示,可能我解不出来这道题,呵呵!说实话,找规律所花的时间比编代码的时间要多得多啊!
在解法中我假定方格的左上角坐标为(0,0),则20个方格,最右下角的坐标为(20,20)
- #-*- coding: UTF-8 -*-
- int_num=20 #设置网格数为20
- dict_result={} #定义一个空字典,存放坐标点为key及(0,0)点到该坐标的路径数
- for x in range(0,int_num+1): #从(0,0)坐标开始循环处理,计算从(0,0)到(x,y)的路径数
- for y in range(0,int_num+1):
- if x==0 or y==0: #如果是(0,y)或(x,0)坐标的点,则将(0,0)到该坐标的路径数赋值为1(因为不允许往走),并存入字典
- dict_result[x,y]=1
- else: #否则,将(0,0)到(x,y)坐标对应的路径数则赋值为(x,y)其相临两个坐标(x或y少1)的路径数之和,并存入字典
- dict_result[x,y]=dict_result[x,y-1]+dict_result[x-1,y]
- print(dict_result[int_num,int_num])
复制代码 |
评分
-
查看全部评分
|