實現 下面就詳細說壹說我實現的具體方式,雖然花了我近2天的時間,但是其實並不是很復雜,這裏我本著拋磚引玉的原則,下面就壹起來看看吧:
我們將定義壹個名叫Case的class用來存儲壹些要測試的數據,然後再定義壹個叫CaseUtil的class用來實現我們的方案。
首先我說壹下具體得思路:這裏我只考慮從下到上的方案(從上到下其實是壹樣的,具體自己想吧)。舉個例子,假設當前的樓層是29 30 31.3個。那麽我們該如何做呢?
首先,不管怎麽說,假設最後壹層即31的到達時間為 (31-1)* 4 + (stopNums-1)*10 說明壹下,這裏為了簡單起見我們就按照案例的數據進行分析,實際上4表示電梯經過每層所需時間,而10表示電梯每層停靠的時間。上面的stopNums是什麽呢?就是電梯到達31層時所有的停靠次數,減去1是除去31層得停靠。而最後壹層到達的人則很可能為最後壹位到達的人,為什麽不是壹定呢,按照本例,上面舉得例子就可以很簡單的看出,在28、31停2次即可,此時最後壹個到達的就是地30層的人了。當然在僅僅是在本例中,實際上會由於具體數值不壹樣而有不同。所以這裏我用了可能,而它也和我們的最優解很接近了,而這給了我想法。雖然最後壹層不壹定是最後壹位,但已經很接近了,而它所花費的時間,僅僅只和壹個變量有關,即stopNums,即可以得出如下結論:
電梯的停靠次數越少,最後壹層的時間也就越少,同樣最佳時間也就越少。
假設我們有壹個方法可以根據當前的停靠次數來計算最佳的停靠方案,那麽我們該如何得到實際最佳方案呢?下面的壹段代碼很好的可以達到我們的目標。