注册 登录
明经CAD社区 返回首页

zzyong00的个人空间 http://www.mjtd.com/?332660 [收藏] [复制] [分享] [RSS]

日志

换几瓶酒的问题

热度 1已有 1438 次阅读2016-3-8 20:12 |系统分类:应用

啤酒     2元一瓶
   4个瓶盖换1瓶
           2个空瓶换1瓶
问:10元可以喝几瓶?
'类模块
Option Explicit

'定义一个对象——酒瓶,就两个属性,分别为 瓶子,瓶盖
Public 瓶子 As Integer
Public 瓶盖 As Integer
’模块
Option Explicit


Public Const 初始酒数量 As Integer = 5
Public 酒() As Variant, iCount As Integer


Public Sub Init()
Dim Item1 As 酒瓶

    ReDim 酒(初始酒数量 - 1)
    iCount = 初始酒数量 - 1
    Dim i As Integer
    For i = 0 To 初始酒数量 - 1
        Set Item1 = New 酒瓶
        Item1.瓶盖 = 1
        Item1.瓶子 = 1
        Set 酒(i) = Item1
    Next i
End Sub

Public Sub DoIt() '开喝开换
    Call 空瓶换酒
    Call 瓶盖换酒
    Dim i As Integer, int瓶子Num As Integer, int盖Num As Integer
    For i = 0 To iCount
        If 酒(i).瓶子 = 1 Then int瓶子Num = int瓶子Num + 1
        If 酒(i).瓶盖 = 1 Then int盖Num = int盖Num + 1
    Next i
    If int瓶子Num >= 2 Or int盖Num >= 4 Then
        DoIt
    Else
        Debug.Print "一共喝了"; iCount + 1; "瓶酒"
    End If
End Sub

Private Sub 空瓶换酒()
Dim i As Integer
Dim ArrChange(1) As Integer, j As Integer
    For i = 0 To iCount
        If j > 1 Then Exit For
        If 酒(i).瓶子 = 1 Then
            ArrChange(j) = i
            j = j + 1
        End If
    Next i
    '不够两个瓶子,不能换,结束
    If j < 2 Then Exit Sub
    '换过酒的瓶子设为0
    For i = 0 To j - 1
        酒(ArrChange(i)).瓶子 = 0
    Next i
    ''换一瓶酒,加入集合
    Dim Item1 As New 酒瓶
    Item1.瓶盖 = 1
    Item1.瓶子 = 1
    iCount = iCount + 1
    ReDim Preserve 酒(iCount)
    Set 酒(iCount) = Item1
    Debug.Print "2个空瓶子换1瓶酒"
    '继续换酒,递归
    Call 空瓶换酒
End Sub
Private Sub 瓶盖换酒()
Dim i As Integer
Dim ArrChange(3) As Integer, j As Integer
    For i = 0 To iCount
        If j > 3 Then Exit For
        If 酒(i).瓶盖 = 1 Then
            ArrChange(j) = i
            j = j + 1
        End If
    Next i
    '不够4个瓶盖,不能换,结束
    If j < 4 Then Exit Sub
    '换过酒的瓶盖设为0
    For i = 0 To j - 1
        酒(ArrChange(i)).瓶盖 = 0
    Next i
    ''换一瓶酒,加入集合
    Dim Item1 As New 酒瓶

    Item1.瓶盖 = 1
    Item1.瓶子 = 1
    iCount = iCount + 1
    ReDim Preserve 酒(iCount)
    Set 酒(iCount) = Item1
    Debug.Print "4个瓶盖换1瓶酒"

    '继续换酒,递归
    Call 瓶盖换酒
End Sub


'执行计算
sub main()
    Init
    DoIt
end main

路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-28 19:47 , Processed in 0.100190 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部