Домино - QBasic

Узнай цену своей работы

Формулировка задачи:

Вот реально наскучили однотипные задачи от

echs

, замешанные на рекурсии особенно. Есть же и другие приёмы программирования. Вот известен ли вам метод бэктрекинг? Задача такая: Из стандартного набора домино ( кто не знает, 28 штук = 0-0, 0-1, 0-2 ... 6-6) в случайном порядке берём N штук. Задача компьютера выстроить максимально возможную цепочку, состыковывая их по правилам домино частями с равным количеством точек.

Пример

N= 6 1-2:1-3:2-6:3-6:5-6:4-4

Решение

Цепочка из 5 элементов 5-6:6-2:2-1:1-3:3-6 Кто сможет решить любым способом, не обязательно при помощи бэктрекинга, главное правильно и эффективно?

Решение задачи: «Домино»

textual
Листинг программы
  1. Dim s, b() As Boolean, n As Long, m As String, k As Long, l As Long
  2.  
  3. Sub main()
  4.     m = ""
  5.     k = 0
  6.     l = 0
  7.     s = Array("1-2", "1-3", "2-6", "3-6", "5-6", "4-4")
  8.     n = UBound(s)
  9.     ReDim b(n) As Boolean
  10.     domino "", ""
  11.     Debug.Print Mid$(m, 2)
  12.     'Debug.Print "Всего вариантов: " & l, "из них с максимальной последовательностью: " & k
  13. End Sub
  14.  
  15. Sub domino(txt As String, ms As String)
  16.     Dim i As Long, flag As Boolean
  17.     For i = 0 To n
  18.         If (b(i) = False And (Right(txt, 1) = Left(s(i), 1) Or Right(txt, 1) = Right(s(i), 1))) Or txt = "" Then
  19.             flag = True
  20.             b(i) = True
  21.             If Right(txt, 1) = Right(s(i), 1) Then domino StrReverse(s(i)), ms & ":" & StrReverse(s(i)) Else domino CStr(s(i)), ms & ":" & s(i)
  22.             b(i) = False
  23.         End If
  24.     Next i
  25.     If Not flag Then
  26.         If Len(m) < Len(ms) Then m = ms: k = 0
  27.         If Len(ms) = Len(m) Then k = k + 1
  28.         l = l + 1
  29.     End If
  30. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут