Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Dancing Links / Открытие/закрытие столбцов

  • Мы продолжаем знакомство с гениальным алгоритмом X Дональда Кнута - Dancing Links.
    На этом уроке мы доработает функции AddRow() и Dance() в классе Dance().
    Так же реализуем функции Cover/Uncover().
  • Дата отправки отчёта: 9 июля 2017 г.
  • Задание выполнено: за 1 час. 44 мин.
  • Чему научился: Реализовывать алгоритм Dancing-Links для частного случая
  • Что было сложным: ---
  • Комментарии: Инициатива наказуема
  • Оценка видео-уроку:
Отчёт от 11589 за Dancing Links / Открытие/закрытие столбцов




Оцени работу

 
Сохранить страницу:

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Yefim  # Dancing Links / Открытие/закрытие столбцов / 2017-07-09 18:19

Лаконичное решение.


10558. --
Иван Воронин
Иван Воронин
ответить
→  Yefim  # Dancing Links / Открытие/закрытие столбцов / 2017-07-09 18:37

Плохое решение, нам надо найти все возможные варианты решения, а не только первое попавшееся. А по поводу того, что алгоритм уходит в вечный цикл - опечатка при копипасте строки цикла была =)


11589. --
Yefim
Yefim
ответить
→  Иван Воронин  # Dancing Links / Открытие/закрытие столбцов / 2017-07-09 20:07

Иван, ты, как всегда, прав. Спасибо за замечание!


10558. --
Иван Воронин
Иван Воронин
ответить
→  Yefim  # Dancing Links / Открытие/закрытие столбцов / 2017-07-09 20:35

Ещё хотел поправить, мы не реализовывали алгоритм для частного случая, алгоритм самодостаточный, а в частном случае он был использован для демонстрации его работы, так как фигур мало и поле не большое то и без оптимизации алгоритм срабатывает сравнительно быстрее.



Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Реализовывать алгоритм
cell.row = row; headers[x].InsertUp(cell); headers[x].size++; Вместо InsertUp было написано InsertLeft. И это было ошибкой :( Программа пытается найти еще несколько вариантов. Но во втором случае она не указала 5 (это фигура E). И мы бы получили полностью собранную фигуру. В третьем случае ответ неверный полностью, так как при выбранных трех фигурах никак нельзя поставить четвертую. Думаю, что неправильные ответы получаются, так как мы не откатываемся до нужного состояния при первых неправильных ответах. Нужно сделать более подробную трассировку работы программы.


Научился: Пытаюсь разобраться как работает алгоритм
Трудности: Пока все непросто
Все получилось. Идут след в след. В противном случае будет уже не выбраться.