Как исправить ошибку в «игре в города»?

Необходимо решить задачу по "игре в города", т.е входные данные это слова на латинице, например, "aab", "aac", "baas", соответственно ответ будет "aab","baas","aac". На небольшом количестве слов отрабатывает нормально, но при инпуте ~900 слов зацикливается бесконечно в части:
for j in range(0,N-U):
    if (s[j][0] == words[i][-1]):
       searchNextWord(s,j,U)

Не могу понять в чем проблема.. хотелось бы получить совет.

Весь код:
def searchNextWord(words,i,U):
        global Result
        s = [None]*N
        if (Result==True):
            return
        res[U] = words[i]
        U += 1
        if (U == N):
            Result = res[U - 1] == words[i]
        if (Result==True):
            return

        for j in range(0,N-U):
            if (j<i):
                s[j]=words[j]
            else:
                s[j]=words[j+1]

        for j in range(0,N-U):
            if (s[j][0] == words[i][-1]):
                searchNextWord(s,j,U)


    words=[]
    N=int(input())
    if (N<1 or N>1000):
        exit()
    for i in range(N):
        new_element = str(input())
        words.append(new_element)

    res = [None]*N
    for i in words:
        if (len(i)>10):
            exit()

    Result = False
    for i in range(0,N):
        if (Result==False):
            searchNextWord(words, i, 0)

    if (Result==True):
        for i in range(0,N):
            print(res[i])
    else:
        print("NO")
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 2
longclaps
@longclaps
Извини, дружок, но в логике твоего кода без твоих комментариев не разобраться.
Единственное, что очевидно - из списка words слова по мере игры никуда не уходят - так почему бы проге не зациклиться, если в words есть закольцованый набор слов.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Попробуйте представить набор слов как "колоду карт" и исключайте найденные слова из этой "колоды" по мере нахождения корректной цепочки.
Изначально, убедитесь, что все слова в этой "колоде" - уникальны.
Это позволит избежать круговых циклов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы