关注
大佬看看这个代码没问题吧,第二题 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)
查看原帖
点赞 评论
相关推荐
05-30 00:12
江西服装学院 Java 头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
30868次浏览 632人参与
# 机械人集合!你是什么工程师? #
15308次浏览 88人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
25943次浏览 211人参与
# 秋招什么时候开投比较合适? #
19000次浏览 274人参与
# 发工资后,你做的第一件事是什么 #
67554次浏览 229人参与
# 如何准备秋招 #
18058次浏览 348人参与
# 百度工作体验 #
219205次浏览 1957人参与
# 机械人与华为的爱恨情仇 #
116197次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25434次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73580次浏览 514人参与
# 不考虑转正,实习多久合适 #
31567次浏览 145人参与
# 影石Insta360求职进展汇总 #
123124次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57249次浏览 526人参与
# 24届的你们都什么时候入职? #
59956次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
255974次浏览 1479人参与
# 实习,不懂就问 #
41827次浏览 643人参与
# 你们公司几号发工资 #
20524次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102425次浏览 958人参与
# 每个月的工资都是怎么分配的? #
25036次浏览 408人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28977次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7456次浏览 130人参与