小美的新游戏-DFS

小美的新游戏

http://www.nowcoder.com/questionTerminal/79bf0fa54f094f0fb2dee942b1ecc359

使用增量字典减少代码量和判断流程
python可能超过最大递归深度,需要手动设置增大递归深度

import sys
sys.setrecursionlimit(100000)
n, m, P, Q = map(int, input().strip().split())
grid = []
for i in range(n):
    grid.append(list(input().strip()))
seq = input().strip()
dir_map = {
    'S':(1, 0),
    'W':(-1, 0),
    'A':(0, -1),
    'D':(0, 1)
}
def is_valid(i, j):
    if 0 <= i <n and 0<= j<m and grid[i][j] != '#':
        return True
    return False
score = 0
def dfs(i, j, t):
    global score
    if t == len(seq):
        return
    dir_cur = dir_map[seq[t]]

    newi = i + dir_cur[0]
    newj = j + dir_cur[1]
    if is_valid(newi, newj):
        if grid[newi][newj] == 'X':
            score -= Q
        elif grid[newi][newj] == 'O':
            score += P
        grid[newi][newj] = '_'
        dfs(newi, newj, t+1)
    else:
        dfs(i, j, t+1)
for i in range(n):
    for j in range(m):
        if grid[i][j] == 'S':
            dfs(i, j, 0)
            print(score)
            exit()
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 11:20
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务