如圖所示,得到停車的費用,不考慮節假日,每天每秒都收費。注意點:收費時段是24小時,白天結束時間21點一定是挨著夜間開始時間21點的其中變量是 白天開始時間,白天結束時間,夜間開始時間,夜間結束時間,白天計費標準N元/半小時,夜間按次收費N元/次超過1毫秒都收費,無免費時間例如: 某車從早上7點停到第二天9點,停車費用: 4 + (21-8)*8 + 4 + (9-8)*8本人算法薄弱,只想到遞歸 8-21-8-21 看停車結束時間如果大于下一個結束點(如果開始是8 下個結束點是 21) 則結束時間取下一個結束點(21),計算其范圍內的費用,遞歸下去,直到停車結束時間小于小一個結束點,取結束時間,算出費用,停止遞歸。希望大家能給點意見,不盡感激。
2 回答

寶慕林4294392
TA貢獻2021條經驗 獲得超8個贊
所有將 開始時間
和 結束時間
做比較的操作都需要考慮日期,不能只考慮小時時間。比如第二天的任何時間要晚于前一天的任何時間。
第2步的目的是規范化開始時間,方便后面的計算。
這里計算一整天(8點~第2天8點)的費用應以108來計算,而不是112:(21-8)*8+4=108
,因為夜間21點到第2天8點只能算一次停車,因此費用是4元。
舉幾個例子吧,就當是順便測試一下算法了:
開始時間=5點,結束時間=7點(同一天):
(1) total=0 (2) 因為開始時間在8點前,因此total=4,開始時間設置為8點整 (3) 此時結束時間比開始時間早,因此直接返回total=4
開始時間=22點,結束時間為第二天8點整:
(1) total=0 (2) 開始時間在21點后,因此total=4,然后開始時間=第二天8點 (3) 此時結束時間與開始時間相等,因此直接返回total=4
開始時間=7點,結束時間為第二天9點(你的例子):
(1) total=0 (2) total=4,開始時間設置為8點 (3) 跳過 (4) 整數天數為1天,total=4+108=112,開始時間變為了第2天8點 (5) 結束時間9點,total=112+(9*2-16)*4=112+8=120
開始時間=7點,結束時間為第二天22點:
(1) total=0 (2) total=4,開始時間設置為8點 (3) 跳過 (4) 整數天數為1天,total=4+108=112,開始時間變為了第2天8點 (5) 結束時間大于21點,total=112+4+(21-8)*8=220
添加回答
舉報
0/150
提交
取消