Conversation
Godrik0
left a comment
There was a problem hiding this comment.
Рекурсивный алгоритм нужно переписать, нет реализации быстрого алгоритма
| result = 0 | ||
| # проходим по всем возможным расстановкам | ||
| for perm in permutations(range(count)): | ||
| valid = True | ||
| for i in range(count): | ||
| for j in range(i + 1, count): | ||
| # проверяем есть ли ферзи на одной диагонали | ||
| if abs(perm[i] - perm[j]) == abs(i - j): | ||
| valid = False | ||
| break | ||
| if not valid: | ||
| break | ||
| if valid: | ||
| result += 1 |
There was a problem hiding this comment.
Лучше перенести этот код в две отдельные функции, например is_valid_permutation и count_n_queens_solutions.
There was a problem hiding this comment.
Этот файл относится к другой домашке, тут его быть не должно
| if new_queen_column in old_queen: | ||
| return False | ||
| new_queen_row = len(old_queen) | ||
| for row, colum in enumerate(old_queen): |
| def rekur_ferz(count): | ||
| desk = [[]] | ||
| for i in range(count): | ||
| new_desk = [] | ||
| for position in desk: | ||
| for colum in range(count): | ||
| if can_be_here_queen(colum + 1, position): | ||
| new_desk.append(position + [colum + 1]) | ||
| desk = new_desk | ||
| return len(desk) |
There was a problem hiding this comment.
Это точно не рекурсивная функция, рекурсивная функция должна вызывать саму себя.
Список desk будет хранить вообще все возможные валидные перестановки, с увеличением количества ферзей, там будет слишком много вариантов. Предполагается, что при рекурсивном подходе будет храниться только одна ветка.
| return True | ||
|
|
||
|
|
||
| def rekur_ferz(count): |
| @@ -0,0 +1,3 @@ | |||
| - переборное решение O(n! * n**2) | |||
There was a problem hiding this comment.
Можно писать формулки как в latex, если обернуть их в $$
No description provided.