【拼多多】2019年7月28日算法笔试,第二题
if __name__ == "__main__":
s = [x for x in input().split()]
begin = s[0][0]
end = s[0][-1]
s.pop(0)
while s != []:
res = [index for index, v in enumerate(s) if v[0] == end]
if res == []:
break
else:
end = s[res[0]][-1]
s.pop(res[0])
if s == [] and end == begin:
print('true')
else: print('false')
上面答案有误:参考下面
def dfs(s, vis, begin, end):
if min(vis) == 1 and begin == end:
return True
find = [index for index, v in enumerate(vis) if v==0]
for i in find:
if s[i][0] == end:
vis[i] = 1
if dfs(s, vis, begin, s[i][-1]):
return True
vis[i] = 0
else: continue
return False
if __name__ == "__main__":
s = [x for x in input().split()]
visited = [0]*len(s)
begin = '#'
flag = False
for i in range(len(s)):
begin = s[i][0]
end = s[i][-1]
visited[i] = 1
if dfs(s, visited, begin, end):
flag = True
break
visited[i] = 0
begin = '#'
if flag:print('true')
else:print('false')
#拼多多##笔试题目#
