題目描述
某市計程車計價規則如下:起步4公里10元,即使你的行程沒超過4公里;接下來的4公里,每公里2元;之後每公里2.4元。行程的最後一段即使不到1公里,也當作1公里計費。
乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。
例如,整個行程為16公里,乘客應該將行程分成長度相同的兩部分,每部分花費18元,總共花費36元。如果坐計程車一次走完全程要花費37.2元。
現在給你整個行程的公里數,請你計算坐計程車的最小花費。
輸入輸入包含多組測試資料。每組輸入乙個正整數n(n<10000000),表示整個行程的公里數。
當n=0時,輸入結束。
輸出對於每組輸入,輸出最小花費。如果需要的話,保留一位小數。
樣例輸入 copy
3916樣例輸出 copy0
10解題思路:這是乙個貪心問題,所以首先要找出各時間段最優的花費,當0< rode <= 4時,最少花費 10 元;當 4 < rode <= 8時,最少花費 10 + (rode - 4) * 2 元;當rode > 8時,出現了不同的情況,記超出 8 公里的路程為 a公里 :① 當 0 < a <= 4時 ,繼續坐計程車花費更少;②當 4 < a <= 5 時,重新打車、繼續坐車花費相同(實現**中把這種情況歸為重新打車中);③當 5 < a 時,重新打車更划算,且又重複了最靠開始提到的情況,於是令 rode -= 8; money += 18; 重新開始計算花費。20.4
36
注意點:最開始實現時,將 rode -= 8; money += 18; 這段**也寫入了求打車花費的函式中,導致記憶體超額。後來將這段**放入主函式後得到滿分。
**如下:
#includeusing namespace std;
double fee(int rode)
int main()
money += fee(rode);
if(money - (int)money > 0) printf("%.1lf\n",money);
else printf("%d\n",(int)money);
}}
Codeup貪心 計程車費
某市計程車計價規則如下 起步4公里10元,即使你的行程沒超過4公里 接下來的4公里,每公里2元 之後每公里2.4元。行程的最後一段即使不到1公里,也當作1公里計費。乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。例如,整個行程為16公里,乘客應該將行程分成長度相同的兩部分,每部分花費...
計程車費用
while true 快速多行縮排,可以選中需要縮排的行,按tab鍵 km input 請輸入您行駛的公里數 km 輸入0結束 2.將公里數轉換為float型別 km float km 3.根據不同的公里數計算需要的車費 如果km的值為0,結束迴圈 if km 0 print 歡迎下次使用!bye ...
貪心 計程車費
某市計程車計價規則如下 起步4公里10元,即使你的行程沒超過4公里 接下來的4公里,每公里2元 之後每公里2.4 元。行程的最後一段即使不到1公里,也當作1公里計費。乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。例如,整個行程為16公里,乘客應該將行程分成長度相同的兩部分,每部分花...