腾讯第五题探险
自己的思路就是先BFS求出所有可能轨迹,再对每条轨迹计算得分,最终返回最大值。
本地用例都没问题,但是提交的时候显示超时,给了20%。。。 想问一下有什么优化或者更好的方法的吗?
def _bfs(n): trace_list = [] for st in range(3): trace_list_st = [[st]] while len(trace_list_st[0]) < n: trace = trace_list_st.pop(0) for pos in range(3): if abs(pos - trace[-1]) <= 1: trace_list_st.append(trace + [pos]) trace_list += trace_list_st return trace_list def _cal_score(trace, score_list): score = 0 flag = 1 for i, pos in enumerate(trace): score_cur = score_list[i][pos] if score_cur == 0: flag *= -1 continue else: score += flag * score_cur return score def tanxian(n, score_list): ret_score = -float('inf') trace_list = _bfs(n) for trace in trace_list: score= _cal_score(trace, score_list) if score > ret_score: ret_score = score return ret_score#腾讯##笔试题目##秋招#