贴一下拼多多笔试最后一题BFS的写法吧~感觉更符合菜鸟的思路

# -*- coding: utf-8 -*-
m,n=5,5
migong=[
list('02111'),
list('01a0A'),
list('01003'),
list('01001'),
list('01111')
]
for i in range(m):
    for j in range(n):
        if migong[i][j]=='2':
            begin=(i,j)
        if migong=='3':
            end=(i,j)
BFS=[(begin,[])]
pointsPassed=[begin]
stepCnt=0
while True:
    lastPoints=BFS
    t=[]
    flag=False
    for i in lastPoints:
        points=i[0]
        keys=i[1]
        if points[0]>=1:
            newX=points[0]-1
            newY=points[1]
            if migong[newX][newY] == '1' or migong[newX][newY] == '2':
                t.append(((newX,newY),keys))
            elif migong[newX][newY] == '0':
                pass
            elif 'a'<=migong[newX][newY]<='z':
                q=keys[:]
                q.append(migong[newX][newY])
                t.append(((newX,newY), q))
            elif 'A'<=migong[newX][newY]<='Z':
                if migong[newX][newY].lower() in keys:
                    t.append(((newX, newY), keys))
                else:
                    pass
            else:
                stepCnt+=1
                flag=True
                break
        if points[1]>=1:
            newX=points[0]
            newY=points[1]-1
            if migong[newX][newY] == '1' or migong[newX][newY] == '2':
                t.append(((newX,newY),keys))
            elif migong[newX][newY] == '0':
                pass
            elif 'a'<=migong[newX][newY]<='z':
                q=keys[:]
                q.append(migong[newX][newY])
                t.append(((newX,newY), q))
            elif 'A'<=migong[newX][newY]<='Z':
                if migong[newX][newY].lower() in keys:
                    t.append(((newX, newY), keys))
                else:
                    pass
            else:
                stepCnt+=1
                flag = True
                break
        if points[0]<m-1:
            newX=points[0]+1
            newY=points[1]
            if migong[newX][newY] == '1' or migong[newX][newY] == '2':
                t.append(((newX,newY),keys))
            elif migong[newX][newY] == '0':
                pass
            elif 'a'<=migong[newX][newY]<='z':
                q=keys[:]
                q.append(migong[newX][newY])
                t.append(((newX,newY), q))
            elif 'A'<=migong[newX][newY]<='Z':
                if migong[newX][newY].lower() in keys:
                    t.append(((newX, newY), keys))
                else:
                    pass
            else:
                stepCnt+=1
                flag = True
                break
        if points[1]<n-1:
            newX=points[0]
            newY=points[1]+1
            if migong[newX][newY] == '1' or migong[newX][newY] == '2':
                t.append(((newX,newY),keys))
            elif migong[newX][newY] == '0':
                pass
            elif 'a'<=migong[newX][newY]<='z':
                q=keys[:]
                q.append(migong[newX][newY])
                t.append(((newX,newY), q))
            elif 'A'<=migong[newX][newY]<='Z':
                if migong[newX][newY].lower() in keys:
                    t.append(((newX, newY), keys))
                else:
                    pass
            else:
                stepCnt+=1
                flag = True
                break
    if flag:
        break
    stepCnt+=1
    BFS=t[:]
print stepCnt


全部评论

相关推荐

2024-12-06 10:46
已编辑
上海大学 C#工程师
LHight:兄弟去偷配方回来
点赞 评论 收藏
分享
object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
🔌插電的小米大冰箱:很喜欢放牛,因为牛不会在我翻过第四座山后跟我说第一座山的草好吃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务