2016-05-03 25 views
3

所以這裏是問題:算法在codewars中的混淆

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

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

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

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

我的代碼:

function tickets(peopleInLine) { 
    var speakVasya = ""; 
    var vasyaValue = 0; 
    for (var i = 0; i < peopleInLine.length; i++) { 
    if (peopleInLine[i] - 25 > vasyaValue) { 
     speakVasya = "NO"; 
     break; 
    } else { 
     vasyaValue += 25; 
     speakVasya = "YES"; 
    } 
    } 
    document.write(speakVasya); 
} 


tickets([25, 25, 50]); 
這裏

現場演示 https://jsfiddle.net/py234z11/1/

我的問題是,根據codewars,我的解決方案經過7次測試,但在2失敗了,但我不明白哪些作爲它沒有給出放入門票功能的爭論。

+1

我覺得有很多所需的信息缺失。如果每個人都有一張25美元的賬單並且一張票是25張,那麼他不需要任何改變,並且可以按照一張票賣掉每個人。 – IMTheNachoMan

+1

@IMTheNachoMan對不起,英語不是我的第一語言,並盡我所能解釋它。因此,如果每個人都有25美元的可以說30人的線路(即門票([25,25,25,25 ....]),程序將會打印YES,因爲她永遠不會耗盡資金。但是如果第一個人有25個,第二個人有100個美元的賬單等待75個變化,那麼差的Vasya不會有任何多餘的變化,所以它會打印NO –

+0

沒有看到你的輸入線,我們怎麼能說。 – bhspencer

回答

3

計算他持有的金額是不夠的 - 你需要跟蹤賬單的數量。例如,如果您有一張100美元的賬單,您無法爲50美元或100美元賬單的人進行更改,您需要特定賬單(25美元賬單才能更改50美元,以及25美元和50美元或3美元25美元賬單改變100美元的賬單)。

因此,不要總是收集所有資金,請記錄收集的賬單數量。

+1

另外,如果有人有100美元,你需要給他們50美元+25美元,如果你有,而不是3美元25美元。 – stark