Option ExplicitSub Main() Debug.Print CheckCards(Array(8, 9, 10, 11, 12)) Debug.Print CheckCards(Array(2, 2, 2, 5, 5)) Debug.Print CheckCards(Array(3, 3, 4, 5, 5)) Debug.Print CheckCards(Array(3, 3, 4, 5, 9)) Debug.Print CheckCards(Array(8, 9, 10, 11, 13)) End SubFunction CheckCards(aCards As Variant) As String Dim aSame(0 To 1) As Byte Dim i As Long, j As Long, k As Long
Sort aCards
For i = 1 To 4 If aCards(i) <> (aCards(0) + i) Then Exit For Next If i = 4 Then CheckCards = "顺子" Exit Function End If
aSame(0) = 0 aSame(1) = 0 k = 0 j = 0 For i = 1 To 4 If aCards(i) = aCards(j) Then aSame(k) = i - j + 1 Else j = i If aSame(k) <> 0 Then k = k + 1 End If End If Next
'请自行根据 aSame(0)、aSame(1) 判断牌型' CheckCards = aSame(0) & "," & aSame(1) End FunctionSub Sort(aCards As Variant) '不分花色,按牌点排序。测试用数据中已排序,请自行实现。' End Sub
Debug.Print CheckCards(Array(8, 9, 10, 11, 12))
Debug.Print CheckCards(Array(2, 2, 2, 5, 5))
Debug.Print CheckCards(Array(3, 3, 4, 5, 5))
Debug.Print CheckCards(Array(3, 3, 4, 5, 9))
Debug.Print CheckCards(Array(8, 9, 10, 11, 13))
End SubFunction CheckCards(aCards As Variant) As String
Dim aSame(0 To 1) As Byte
Dim i As Long, j As Long, k As Long
Sort aCards
For i = 1 To 4
If aCards(i) <> (aCards(0) + i) Then Exit For
Next
If i = 4 Then
CheckCards = "顺子"
Exit Function
End If
aSame(0) = 0
aSame(1) = 0
k = 0
j = 0
For i = 1 To 4
If aCards(i) = aCards(j) Then
aSame(k) = i - j + 1
Else
j = i
If aSame(k) <> 0 Then
k = k + 1
End If
End If
Next
'请自行根据 aSame(0)、aSame(1) 判断牌型'
CheckCards = aSame(0) & "," & aSame(1)
End FunctionSub Sort(aCards As Variant)
'不分花色,按牌点排序。测试用数据中已排序,请自行实现。'
End Sub