內容 :
假設桌上放了一疊紙牌,這疊紙牌是從同一副完整的 52 張撲克牌 (不含鬼牌) 中任意抽出來的 N 張牌,且尚未經任何順序排列。
現在我們要從這 N 張牌中,找出其中依大小排列後的第 M 大的牌。
數字大小依據 K > Q > J > 10 > … > 2 > A 的順序排列。
若兩張牌數字相同,則依花色決定大小,且依 黑桃(S) > 紅心(H) > 方塊(D) > 梅花(C) 的順序排列。
現在我們要從這 N 張牌中,找出其中依大小排列後的第 M 大的牌。
數字大小依據 K > Q > J > 10 > … > 2 > A 的順序排列。
若兩張牌數字相同,則依花色決定大小,且依 黑桃(S) > 紅心(H) > 方塊(D) > 梅花(C) 的順序排列。
輸入說明 :
輸入檔中的第一行為一個正整數 N ,代表有 N 張牌。
第二行則有 2N 個以空白相間隔的大寫英文字母或數字
每兩個相鄰的字母或數字代表一張牌的花色和數字大小
第三行則有一個正整數 M,代表我們要找的是第 M 大的牌。
為簡化起見,我們假設 N ≦ 52,1 ≦ M ≦ N,且不會有兩張花色和數字皆相同的牌重複出現。
第二行則有 2N 個以空白相間隔的大寫英文字母或數字
每兩個相鄰的字母或數字代表一張牌的花色和數字大小
第三行則有一個正整數 M,代表我們要找的是第 M 大的牌。
為簡化起見,我們假設 N ≦ 52,1 ≦ M ≦ N,且不會有兩張花色和數字皆相同的牌重複出現。
輸出說明 :
印出第 M 大的牌
格式為 "花色 數字"
格式為 "花色 數字"
範例輸入 :
5
S 1 H 9 D 9 H 13 S 12
2
範例輸出 :
S 12
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, y
Line Input #1, x
x = Replace(x, " ", "")
For i = 1 To Len(x)
a = Mid(x, i, 1)
If a = "S" Or a = "H" Or a = "D" Or a = "C" Then
If Mid(x, i + 2, 1) <= 12 Then
List1.AddItem Val(Mid(x, i + 1, 2) + 100) & " " & Mid(x, i, 1)
Else
List1.AddItem Val(Mid(x, i + 1, 1) + 100) & " " & Mid(x, i, 1)
End If
End If
Next
Input #1, n
Print #2, Right(List1.List(List1.ListCount - n), 1) & " " & Val(Left(List1.List(List1.ListCount - n), 3) - 100)
Close
Close
End
End Sub
Dim a()
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, x, y, z
ReDim a(x)
y = Replace(y, " ", "")
c = 1
For i = 1 To Len(y)
If Mid(y, i, 1) = "S" Or Mid(y, i, 1) = "H" Or Mid(y, i, 1) = "D" Or Mid(y, i, 1) = "C" Then
Select Case Mid(y, i + 1, 2)
Case 10, 11, 12, 13
a(c) = Mid(y, i, 3)
List1.AddItem (Right(a(c), 2) + 100) & Mid(y, i, 1)
Case Else
a(c) = Mid(y, i, 2)
List1.AddItem (Right(a(c), 1) + 100) & Mid(y, i, 1)
End Select
End If
Next i
Print #2, Right(List1.List(x - z), 1) & " " & Val(Left(List1.List(x - z), 3) - 100)
Close #2
Close #1
End
End Sub