关注
大佬看看这个代码没问题吧,第二题 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)
查看原帖
点赞 评论
相关推荐


点赞 评论 收藏
分享

点赞 评论 收藏
分享
09-16 18:00
门头沟学院 C++ 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 从顶到拉给所有面过的公司评分 #
17011次浏览 155人参与
# 机械人春招想让哪家公司来捞你? #
357095次浏览 3108人参与
# 为了求职,我做过的疯狂伪装 #
11644次浏览 206人参与
# 晒晒你的中秋福利 #
14922次浏览 96人参与
# 职场破冰,你们都聊什么? #
6578次浏览 66人参与
# bilibili求职进展汇总 #
87212次浏览 793人参与
# 工作压力大怎么缓解 #
104940次浏览 1050人参与
# 大家实习每天都在干啥 #
88839次浏览 518人参与
# 广联达求职进展汇总 #
10829次浏览 50人参与
# 机械人怎么评价今年的华为 #
208731次浏览 1524人参与
# 秋招OC许愿 #
346037次浏览 2525人参与
# 你的公司给实习生发中秋礼物吗 #
1455次浏览 26人参与
# 你面试被问到过哪些不会的问题? #
20408次浏览 783人参与
# 聊聊这家公司值得去吗 #
555967次浏览 3693人参与
# 电网笔面经互助 #
46545次浏览 431人参与
# 宣讲会你有哪些意向不到的收获 #
1081次浏览 20人参与
# 秋招的嫡长offer #
28257次浏览 266人参与
# 你觉得早上几点上班合适? #
82395次浏览 330人参与
# 秋招报数:你投了多少家公司? #
28029次浏览 290人参与
# 实习要如何选择和准备? #
114641次浏览 1436人参与