再次问好,我想知道如何在yatzee游戏中获得2对最大的对。 从前一个问题我找到一对,但现在我甚至不知道。看起来我们只需要将1对代码中的金额加倍,但这样做我只是没有结果或只是骰子的x4
Public Function parVerdier1(ByVal regel As Integer, tall As Object)
Dim sum As Integer = 0
For i As Integer = 0 To 4
For j As Integer = (i + 1) To 4
If tall(i) = tall(j) Then
If tall(i) + tall(j) > sum Then
sum = tall(i) + tall(j)
End If
End If
Next
Next
Return sum
End Function
这是1对代码,如果有人想知道,请帮忙,谢谢你:)
此外,regel
还会在其余代码中使用。
我的lates代码有很多帮助谢谢:)当我得到这些骰子时,我仍然遇到了http://imgur.com/ExpBb2Q等问题我得到了40分......
Public Function parVerdier2(ByVal regel As Integer, tall As Object)
Dim sum As Integer = 0
Dim sum2 As Integer = 0
For o As Integer = 0 To 4
For l As Integer = (o + 1) To 4
For i As Integer = (l + 1) To 4
For j As Integer = (i + 1) To 4
If tall(i) = tall(j) And tall(o) = tall(l) Or tall(i) = tall(o) And tall(j) = tall(l) Or tall(i) = tall(l) And tall(j) = tall(o) Then
If tall(i) + tall(j) + tall(o) + tall(l) > sum Then
sum2 = sum
sum = tall(i) + tall(j) + tall(o) + tall(l)
ElseIf tall(i) + tall(j) + tall(o) + tall(l) > sum2 Then
sum2 = tall(i) + tall(j) + tall(o) + tall(l)
End If
End If
Next
Next
Next
Next
sum += sum2
Return sum
End Function
答案 0 :(得分:1)
你只需要另一个变量来获得第二大数额:
Public Function parVerdier1(ByVal regel As Integer, tall As Object)
Dim sum As Integer = 0
Dim sum2 As Integer = 0
For i As Integer = 0 To 4
For j As Integer = (i + 1) To 4
If tall(i) = tall(j) Then
If tall(i) + tall(j) > sum Then
sum2 = sum
sum = tall(i) + tall(j)
Else If tall(i) + tall(j) > sum2 Then
sum2 = tall(i) + tall(j)
End If
End If
Next
Next
Return sum + sum2
End Function
答案 1 :(得分:0)
您可以使用Linq获得最大总和的两对:
Public Shared Sub Main()
Dim dieValues() As Integer = {3, 3, 4, 4, 5}
Dim pairs = dieValues.GroupBy(Function(i) i).
Where(Function(g) g.Count() = 2).
OrderByDescending(Function(g) g.Sum()).
Select(Function(g) New With {.Value = g.Key, .Sum = g.Sum()}).
Take(2)
For Each g In pairs
Console.WriteLine("{0}: {1}", g.Key, g.Sum)
Next
Console.ReadLine()
End Sub
输出:
4: 8
3: 6