问题很简单,在给出的成语中,在能够接龙的前提下,找到成语的最短路径,每个成语只能使用一次,接龙即:前一个成语的最后一个字和后一个成语的最后一个字相同,最短路径即 组成接龙的成语数量最少
1条回答 默认 最新
CSDN专家-天际的海浪 2021-07-25 17:48关注把成语放到字典中成语的第一个字作为字典的键,用广度优先方式遍历就好
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)st = input("请输入成语中接龙的起始字:") et = input("请输入成语中接龙的结束字:") li = input("请输入多个成语(以空格分隔):").split(" ") def jl(li,st,et): dic = {} for v in li: dic.setdefault(v[0],[]).append(v) r = {st:[]} while len(r)>0: tr = {} for k,v in r.items(): if k in dic: for c in dic[k]: if c not in v: tr[c[-1]] = v + [c] if c[-1]==et: return tr[c[-1]] r = tr return "无法接龙" print(jl(li,st,et))解决 无用评论 打赏 举报