2017-04-10 43 views
0

我一直在試圖解決這個黑客練習題(Compare the Triplets),我不知道我錯在哪裏。我的輸出是正確的,但它並沒有通過hackerrank的所有測試用例。有什麼建議?比較三胞胎C#hackerrank改進我的解決方案

問題:

using System; 
    using System.Collections.Generic; 
    using System.IO; 
    using System.Linq; 
    class Solution { 

static void Main(String[] args) { 
    string[] tokens_a0 = Console.ReadLine().Split(' '); 
    int a0 = Convert.ToInt32(tokens_a0[0]); 
    int a1 = Convert.ToInt32(tokens_a0[1]); 
    int a2 = Convert.ToInt32(tokens_a0[2]); 
    string[] tokens_b0 = Console.ReadLine().Split(' '); 
    int b0 = Convert.ToInt32(tokens_b0[0]); 
    int b1 = Convert.ToInt32(tokens_b0[1]); 
    int b2 = Convert.ToInt32(tokens_b0[2]); 
    // Write Your Code Here 
    int aliceScore = 0; 
    int bobScore = 0; 


    if(a0 > b0 || a1 > b1 || a2 > b2) 
    { 
     aliceScore++;  
    } 
    if(b0 > a0 || b1 > a1 || b2 > a2) 
    { 
     bobScore++; 
    } 
    if(a0 == b0 || a1 == b1 || a2 == b2) 
    { 
     aliceScore += 0; 
     bobScore += 0; 
    } 

    Console.WriteLine(aliceScore +" " + bobScore); 

} 

}

+2

我認爲你的3rd if語句沒有任何用處。 – GER

+1

在你的版本中,任何一個玩家只能有0或1分。這顯然是錯誤的 – UnholySheep

+0

讓您的代碼在問題 – Alyafey

回答

0

我想我看到的問題,你需要比較每個數據點並計算出每一個分數。所以,比較數據點0,則數據點1個,則數據點2.

的僞碼以下時,沒有測試:

if(a0 > b0) 
    { 
     aliceScore++;  
    } 
    else if(b0 > a0) 
    { 
     bobScore++; 
    } 


    if(a1 > b1) 
    { 
     aliceScore++; 
    } 
    else if(b1 > a1) 
    { 
     bobScore++; 
    } 

    if(a2 > b2) 
    { 
     aliceScore++; 
    } 
    else if(b2 > a2) 
    { 
     bobScore++; 
    } 
+0

Ty GER中提供約束。我現在意識到在每個比較點上我都沒有攻擊這個問題。有沒有描述我的方法的技術術語?我是否也可以問你在看問題時的思維過程? – xslipstream

+0

對於這個小問題,我把它分解在紙上(在我的腦海裏),手動解決它,而不寫任何代碼。這更難以解決更大的難題和現實世界的問題。我不確定你的原始方法是否有一個術語。 – GER

0

我認爲這不是解決這個問題的正確道路。您應該遵循以下步驟 。

 int[] Alice = { a0, a1, a2 }; 
     int[] Bob = { b0, b1, b2 }; 
     int alice = 0; 
     int bob = 0; 
     for (int i = 0; i < Alice.Length; i++) 
     { 
      if (Alice[i] > Bob[i]) 
      { 
       alice++; 
      } 
      if (Alice[i] < Bob[i]) 
      { 
       bob++; 
      } 
     } 
     int[] result = { alice, bob }; 
     return result;