【拼多多】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')


#拼多多##笔试题目#
全部评论
输入['ABC','CDA','CAB','BCC']时返回的false,输入 ['ABC','CAB','BCC','CDA']时返回True,实际上两个都应该是True
点赞 回复 分享
发布于 2019-07-28 22:46

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务