大佬看看这个代码没问题吧,第二题 DFS,加了个简单的剪枝 import sys def per(origin, target): for i in target: if i not in origin: return [] res = [] dfs(origin, target, [], "", res) return res def dfs(old, target, path, now, res): if not old: # 遍历结束 # 判断是否相等 if now == target: res.append(path.copy()) return if not is_in(now, target): # 未遍历结束 # 判断是否已经不相等 return cur = old[0] if cur not in target: path.append("d") dfs(old[1:], target, path, now, res) path.pop() else: path.append("d") dfs(old[1:], target, path, now, res) path.pop() path.append("l") dfs(old[1:], target, path, cur + now, res) path.pop() path.append("r") dfs(old[1:], target, path, now + cur, res) path.pop() def is_in(ls1, ls2): # 判断 ls1 是否为 ls2 的连续子集 str1 = "".join(map(str, ls1)) str2 = "".join(map(str, ls2)) return str1 in str2 if __name__ == "__main__": s = int(sys.stdin.readline().strip()) ans = "" for _ in range(s): origin = sys.stdin.readline().strip() target = sys.stdin.readline().strip() ans += "{\n" res = per(origin, target) res.sort() # print(res) if res: for each_res in res: ans += " ".join(each_res) + " \n" ans += "}\n" if ans: ans = ans[:-1] print(ans)
点赞 评论

相关推荐

全A了,但是美团还有HC吗
投递美团等公司10个岗位
点赞 评论 收藏
分享
08-27 21:03
已编辑
西南石油大学 Java
冷花幽露:大概率是了,京东面试就是这样。我上周一面也是20多分钟,面试官问的很刁钻的问题也答上来了,面完过了几天还是没推进,泡池子,昨天一看挂了。如果一面完第2天没有收到2面邀请,基本上不用抱希望了。如果你的bg是985,面试流程也是和我们一样,20多分钟,唯一区别就是面完他们会很快收到二面邮件,而不像我们泡池子然后挂掉
点赞 评论 收藏
分享
shanhai1:第一份实习挺看运气的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务