2017-10-18 86 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"; 
    } 
} 
相关问题