在int数组中查找最高对

时间:2014-11-02 15:12:00

标签: c# arrays

我有一个骰子游戏,我需要找到最高的5个骰子并得到它的总和。 到目前为止,我已经制作了这个代码,将数字计算成对。现在我想找到最高的一对。

代码:

int Pair[];
Pair = new int[7] {0, 0, 0, 0, 0, 0, 0} //Seven pairs because i dont want to use Pair[0]

int TT[];
TT = new int[5] { 1, 6, 3, 1, 3 }; //five dice

int t = 1;
for(int i = 0; i < 5; i++)
{
    if ( TT[i] == t)
    {
    Pair[t] = Pair[t] + 1;
    t = t + 1;
    } 
}

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,我认为你过于复杂了。如果你考虑一下,你想要的是arry中两个最高的数字。只需对其进行排序,然后将其反转,并取两个第一个数字。

class Program
{
    static void Main(string[] args)
    {
        int[] Dice = new int[5] { 1, 6, 3, 1, 3 };
        Array.Sort(Dice);
        Array.Reverse(Dice);
        Console.WriteLine("The largest pair is ({0}, {1})", Dice[0], Dice[1]);
    }
}

bigts对的另一种可能性(如评论中所述)是你想要在列表中找到两次出现的最高数字。您可以通过对数组进行排序,将其反转来执行此操作,以便从最高数字中读取数据。然后逐步检查当前号码是否与下一个号码匹配,如果是这种情况,则找到最高号码。

class Program
{
    static void Main(string[] args)
    {
        int[] Dice = new int[5] { 1, 6, 3, 1, 3 };
        Array.Sort(Dice);
        Array.Reverse(Dice);

        for (int i = 1; i < Dice.Length; i++)
        {
            if (Dice[i] == Dice[i - 1])
            {
                Console.WriteLine("The largest pair is ({0}, {1})", Dice[i], Dice[i-1]);
                break;
            }
        }
    }
}