关注
大佬看看这个代码没问题吧,第二题 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)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客树洞,我想对你说 #
15266次浏览 119人参与
# 求职中的尴尬瞬间 #
6518次浏览 53人参与
# 快手技术岗信息交流阵地 #
6934次浏览 53人参与
# 大学最后一个寒假,我想…… #
55147次浏览 600人参与
# 牛客周边新品开箱 #
11619次浏览 91人参与
# 牛友的志愿填报指南 #
36341次浏览 188人参与
# 应届生被毁约被毁意向了怎么办 #
47649次浏览 280人参与
# 如何KTV领导 #
73992次浏览 505人参与
# 研究所笔面经互助 #
97664次浏览 550人参与
# 怎么给家人解释你的工作? #
15063次浏览 87人参与
# 硬件人的春招flag #
52869次浏览 435人参与
# 得物app工作体验 #
29878次浏览 69人参与
# 机械人避雷的岗位/公司 #
29991次浏览 249人参与
# 国企还是互联网,你怎么选? #
172427次浏览 1305人参与
# 你的mentor是什么样的人? #
18796次浏览 120人参与
# 打工人锐评公司红黑榜 #
175892次浏览 1023人参与
# 帮我看看,领导说这话什么意思? #
24918次浏览 107人参与
# 大疆工作体验 #
19924次浏览 85人参与
# 校招泡的最久的公司是哪家? #
15550次浏览 94人参与
# 机械人集合!你是什么工程师? #
21094次浏览 91人参与
# 今年形式下双非本找得到工作吗 #
239732次浏览 1435人参与