2014-11-02 3 views
-2

저는 5 개의 주사위 중 가장 높은 짝을 찾고 그 총을 구해야하는 주사위 게임을 가지고 있습니다. 숫자를 쌍으로 계산하는 지금까지이 코드를 만들었습니다. 이제 나는 가장 높은 쌍을 찾고 싶다.int 배열에서 가장 높은 쌍을 찾습니다.

코드 :

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; 
    } 
} 
+3

가장 높은 쌍은 무엇입니까? 숫자의 합이나 다른 것입니까? 이 경우 정수 목록을 정렬하고 두 가지를 가장 많이 수행해야합니다. – Andersnk

+1

또는 적어도 두 번 발생하는 숫자 일 수 있습니까? 위의 예에서 '3'. –

+0

처음에는 대답을 생각하지 않았습니다. 제 대답을 편집했습니다. 감사! – Andersnk

답변

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]); 
    } 
} 

큰 세트 쌍 (주석에서 언급 한 것)의 다른 가능성은 목록에서 두 번 발생하는 가장 높은 번호를 찾고 싶다는 것입니다. 배열을 정렬하고 역순으로 배열함으로써이 작업을 수행 할 수 있으므로 가장 높은 번호부터 읽을 수 있습니다. 그런 다음 현재 숫자가 다음 숫자와 점진적으로 일치하는지 확인하고,이 경우 가장 높은 쌍을 찾았습니다.

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; 
      } 
     } 
    } 
} 
+0

이러한 접근법은이 작은 예제에 충분하지만 일반적으로 효율적인 코드를 작성해야합니다. 예 : Array.Reverse()에 대한 호출은 불필요하며 편리한 인덱싱을 제외하고는 아무 것도주지 않고 귀중한 시간을 소비합니다. 두 문제는 정렬없이 (적어도'O (n log n)'을 취함) 선형 시간으로 해결할 수 있습니다. Althogh 선형 시간 접근법이이 작은 예제의 정렬 접근보다 실제로 더 빠르다면 의심 스럽습니다. –

+0

예를 정렬하지 않고도 문제를 해결할 수는 있지만 해결책은 훨씬 복잡합니다.이 항목은 성능이 실제로 문제가되지 않는 엔트리 레벨 질문이며, 역방향 작업을 추가 한 이유이기도합니다. 가장 효율적인 버전이라는 것을 알고 있지만 이해하기 쉽습니다. 또한 입력의 크기가 크지 않은 한 O (n log n)은 O (n)보다 훨씬 느리지 않습니다. :) – Andersnk

+0

이것은 훨씬 쉬웠습니다. 답변 해주셔서 감사합니다. 또한 배열에 쌍이 있는지 감지해야합니다. 배열에서 dublicate를 감지하는 짧은 코드가 있습니까? –

관련 문제