当前位置: 高中信息技术 / 综合题
  • 1. (2020高三下·宁波开学考) 在n个(1≤n≤15)一连串的方格内填写字母A或B,但相邻两格内不能都填B,求所有可能的填写方案数。例如当n=3,可能的方案有AAA、AAB、ABA、BAA、BAB等5种。

    丽华设计如下算法:考虑到方案中只包含了A与B两个字母,可以用二进制的0和1来代替(0表示A,1表示B)。当全部是0时最小,此数0;当全部是1时此数最大。枚举0到最大数的每一种情况,逐一判断是否包含B相连(二进制数1相连)情况,符合条件的0、1转为A、B后输出。

    根据以上算法思想,丽华使用VB程序编写了一个程序来解决这个问题。在文本框Text1中输入n的值,点击“寻找方案”按钮Command1后,在列表框List1中输出所有的方案,在标签Label3中显示方案总数。

    1. (1) 如果输入的n值等于4,那么所有可能的方案有 种。
    2. (2) 实现上述功能的VB程序如下,运行结果如图所示,请在划线处填入合适的代码。

      Private Sub Command1_Click()

          Dim i As Integer, j As Integer, n As Integer, t As Integer, k As Integer

          Dim flag as Boolean, ans As Integer

          Dim a(1 To 15) As Integer

          n = Val(Text1.Text)

          For i = 0 To 2^n-1

              t = i

              For j = 1 To n

                  a(j) = t Mod 2

                  t = t \ 2

              Next j

              flag = True

              For k = 1 To n-1

                  If  Then flag = False

              Next k

              If flag Then  : ans = ans + 1

          Next i

          Label3.Caption = "可能方案共" + Str(ans) + "种"

      End Sub

      Function GetStr(x As Integer, n As Integer) As String

          Dim m As Integer, i As Integer

          GetStr = ""

          m = x

          For i = 1 To n

              If m Mod 2 = 0 Then

                  GetStr = "A" + GetStr

              Else

                  GetStr = "B" + GetStr

              End If

             

          Next i

      End Function

微信扫码预览、分享更方便