f147 - 1. 點餐系統 (Ordering System)
題目描述
題目要求模擬一個點餐系統。使用者輸入點餐編號,系統輸出對應的餐點名稱,並計算總價。輸入 0 時結束點餐,最後輸出總價。
解題思路
題目主要考驗對陣列的應用以及輸入輸出的處理。程式碼中定義了兩個字串陣列 a 和 b 分別儲存主餐和配餐的名稱,以及兩個整數陣列 aa 和 bb 儲存對應的價格。程式讀取使用者輸入的點餐編號 n,根據 n 的值判斷是主餐還是配餐,輸出餐點名稱並更新總價 total。當輸入為 0 時,程式結束點餐並輸出總價。
複雜度分析
- 時間複雜度: O(n),其中 n 是點餐次數。
- 空間複雜度: O(1),因為使用的陣列大小固定,不隨輸入規模變化。
程式碼
#include <iostream>
using namespace std;
string a[5]={"Medium Wac 4","WChicken Nugget 8","Geez Burger 7","ButtMilk Crispy Chicken 6","Plastic Toy 3"};
string b[4]={"German Fries 2","Durian Slices 3","WcFurry 5","Chocolate Sunday 7"};
int aa[5]={4,8,7,6,3},bb[4]={2,3,5,7},total=0,n;
int main(){
cin.tie(0); ios::sync_with_stdio(false);
while(cin >> n){
if(n==0)break;
else if(n==1){
cin >> n;
cout << a[n-1];
total+=aa[n-1];
}
else{
cin >> n;
cout << b[n-1];
total+=bb[n-1];
}
cout << "\n";
}
cout << "Total: " << total;
}