关注
大佬看看这个代码没问题吧,第二题 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)
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 秋招落幕,你是He or Be #
1237次浏览 49人参与
# 应届生进小公司有什么影响吗 #
108444次浏览 1105人参与
# 重来一次,你会对开始求职的自己说 #
1778次浏览 42人参与
# 实习没事做是福还是祸? #
6106次浏览 91人参与
# 团建是“福利”还是是 “渡劫” #
2982次浏览 68人参与
# 一人说一个提前实习的好处 #
2072次浏览 30人参与
# 你面试体验感最差/最好的公司 #
1056次浏览 37人参与
# 你小心翼翼的闯过多大的祸? #
5635次浏览 84人参与
# 工作中听到最受打击的一句话 #
1281次浏览 19人参与
# OPPO求职进展汇总 #
755674次浏览 5390人参与
# 今年你最想重开的一场面试是? #
1008次浏览 19人参与
# 大厂VS公务员你怎么选 #
69775次浏览 643人参与
# 今年形式下双非本找得到工作吗 #
266103次浏览 1541人参与
# 公司情报交流地 #
127285次浏览 1232人参与
# 在牛客分享我的求职旅程 #
176891次浏览 2689人参与
# 实习简历求拷打 #
26674次浏览 263人参与
# 从顶到拉给所有面过的公司评分 #
144588次浏览 516人参与
# 面试时间长是好事吗? #
116616次浏览 706人参与
# 面试尴尬现场 #
209223次浏览 851人参与
# 找不到好工作选择GAP真的丢人吗 #
93806次浏览 1008人参与
