百度 笔试爬山求指教

用这种递归的方式做,为什么只有80%,请问有什么情况没考虑到

inx =raw_input().split()
#print inx
n = int(inx[0])   #n行
m = int(inx[1])    #m列
ins = raw_input().split()
sx = int(ins[0])-1    #起始位置
sy = int(ins[1])-1
#print(n,m,sx,sy)
l = []
for o in range(n):
    l.append(raw_input().split())    #矩阵赋值
class a(object):
    dx = [0,0,1,-1]    #四种走法
    dy = [1,-1,0,0]
    maxhigh = 0
    def go(self,l,sx,sy):
        curhigh = int(l[sx][sy])
        if curhigh>self.maxhigh:
            self.maxhigh = curhigh
        for x,y in zip(self.dx,self.dy):
            if sx+x>=0 and sx+x<m and sy+y>=0 and sy+y<n:    #判断边界
                nextx ,nexty = sx+x,sy+y
                if int(l[nextx][nexty])>curhigh:    #下一步海拔高就走到那一步
                    sx ,sy= nextx,nexty
                    self.go(l,sx,sy)
                else:
                    continue
        return self.maxhigh
b = a()
print b.go(l,sx,sy)
#百度#
全部评论
这个题我觉得用bfs做最好
点赞 回复 分享
发布于 2018-04-19 02:35
海拔相同的也可以走?
点赞 回复 分享
发布于 2018-04-18 22:13
过了80%一般都是速度问题,你记录一下访问过的节点,和深度优先一样,访问过的节点就不要重复访问了
点赞 回复 分享
发布于 2018-04-18 22:11
感觉每个人的题不一样额
点赞 回复 分享
发布于 2018-04-18 22:01

相关推荐

04-18 00:32
已编辑
中南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务