內容 :
假設桌上放了一疊紙牌,這疊紙牌是從同一副完整的 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
Dim num() As String
回覆刪除Private Sub Command1_Click()
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, mycount
ReDim num(mycount)
Input #1, temp
strr = Split(temp, " ")
countt = 1
For i = 0 To mycount * 2 - 1
tempp = tempp & strr(i)
If i Mod 2 <> 0 Then num(countt) = tempp: countt = countt + 1: tempp = ""
Next
countt = countt - 1
For ii = 1 To countt - 1
For iii = ii + 1 To countt
If Val(Mid(num(ii), 2, Len(num(ii)) - 1)) < Val(Mid(num(iii), 2, Len(num(iii)) - 1)) Then
ttemp = num(ii): num(ii) = num(iii): num(iii) = ttemp
ElseIf Val(Mid(num(ii), 2, Len(num(ii)) - 1)) = Val(Mid(num(iii), 2, Len(num(iii)) - 1)) Then
If Asc(Mid(num(ii), 1, 1)) < Asc(Mid(num(iii), 1, 1)) Then ttemp = num(ii): num(ii) = num(iii): num(iii) = ttemp
End If
Next
Next
Input #1, ans
Print #2, Mid(num(ans), 1, 1) & " " & Mid(num(ans), 2, Len(num(ans)) - 1)
Close #2
Close #1
End
End Sub
Dim b() As String
回覆刪除Dim c() As Integer
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, n
ReDim b(Val(n)), c(Val(n))
Input #1, x
Input #1, f
a = Split(x)
For i = 0 To UBound(a)
If i Mod 2 = 0 Then b(i \ 2 + 1) = a(i) Else c(i \ 2 + 1) = a(i)
Next i
For i = 1 To UBound(c)
For j = i + 1 To UBound(c)
If c(i) < c(j) Then z = c(i): c(i) = c(j): c(j) = z: y = b(i): b(i) = b(j): b(j) = y
If c(i) = c(j) Then
If b(i) < b(j) Then z = c(i): c(i) = c(j): c(j) = z: y = b(i): b(i) = b(j): b(j) = y
End If
Next j
Next i
Print #2, b(Val(f)) & " " & c(Val(f))
Close #2
Close #1
End
End Sub