2017-10-18 87 views
-1

新的「復仇者」電影剛剛發佈!電影票房有很多人站在一條巨大的線上。他們每個人都有一張100美元,50美元或25美元的賬單。 「復仇者」票價25美元。無法通過codewar的測試用例

Vasya目前是一名職員。他想把票賣給這條線上的每一個人。

Can Vasya可以向每個人出售一張門票,如果他最初沒有錢,並且按照人們遵循的順序嚴格銷售門票,那麼可以給予更改?

返回YES,如果Vasya可以向每個人出售機票並進行更改。否則返回NO。

例如,

Line.Tickets(new int[] {25, 25, 50}) // => YES 

我能夠通過10個測試用例中的11個,但對於1個測試用例,它顯示我的結果是錯誤的。

說, 輸入=>Line.Tickets(new int[] {25,50,25,100}) 我的代碼的輸出=

NO

如果第一人有25 $ bill-> count25 = 1和count50 = 0,如果第二人有50美元的賬單 - >計數50 = 1和計數25 = 0,如果第三方有25美元的賬單 - >計數50 = 1和計數25 = 1,如果第四方有100美元的賬單 - >計數50 = 0和計數25 = 0

public class Line { 
    public static String Tickets(int[] peopleInLine) { 
     int count25 = 0; 
     int count50 = 0; 
     for (int i = 0; i < peopleInLine.length; i++) { 
      if (peopleInLine[i] == 100) { 
       if (count25 == 1 && count50 > 0) { 
        count25 = count25 - 1; 
        count50 = count50 - 1; 
       } 

       if (count25 >= 3) { 
        count25 = count25 - 3; 
       } else { 
        return "NO"; 
       } 
      } 

      if (peopleInLine[i] == 25) { 
       count25 = count25 + 1; 
      } 

      if (peopleInLine[i] == 50) { 
       count50 = count50 + 1; 
       count25 = count25 - 1; 
       if (count25 < 0) { 
        return "NO"; 
       } 
      } 
     } 
     return "YES"; 
    } 
} 
+0

如果你讓別人用100美元的鈔票,你有2分25秒和1個50?你應該能夠給他改變,但我沒有看到這個選項。 – JackVanier

+0

那麼,當您發出** NO **響應時,關鍵變量的值是什麼?我看不到試圖去調試。 – Prune

+0

@JackVanier,我在代碼 – CryBaby

回答

0

如果第一條if語句(if(count25==1&&count50>0))的計算結果爲true,則不應評估100美元鈔票案例(if(count25>=3))中的第二條if語句。

使用else if第二個條件:

if (peopleInLine[i] == 100) { 
    if(count25 == 1 && count50 > 0) { 
     count25--; 
     count50--; 
    } else if (count25 >= 3) { 
     count25-=3; 
    } else { 
     return "NO"; 
    } 
} 
相關問題