moea_joint_essay
110年
[統計資訊] 資料庫及資料探勘、程式設計
第 六 題
某電梯管理系統控制多台電梯,當某樓層之等待區按下按鈕時,會將其樓層號碼傳送到系統之共用 Queue中,系統會定時自共用 Queue中讀取一筆目標樓層號碼,並尋找離此目標樓層最近的電梯來提供服務。請使用下列所有的函式,來撰寫一選取電梯函式 SelElev,輸入為電梯的總數,其傳回為離目標樓層最近的電梯號碼,但當未選擇到電梯時,則傳回 0。另外,當電梯總數為 N時,電梯號碼為1到 N;樓層號碼為 1代表 1樓、2代表 2樓、0 代表地下 1 樓、-1 代表地下 2 樓(依此類推)。(20 分)
int getqueue() /* 自共用 Queue 中取得下一筆目標樓層號碼。其傳回為下一筆目標樓層號碼,當無資料時,則傳回 999。 */
int getcurfloor(int elevid) /* 取得指定電梯目前所在的樓層。輸入為電梯號碼,其傳回為此電梯目前所在的樓層,但當此電梯不提供服務時,則傳回 999。 */
int getqueue() /* 自共用 Queue 中取得下一筆目標樓層號碼。其傳回為下一筆目標樓層號碼,當無資料時,則傳回 999。 */
int getcurfloor(int elevid) /* 取得指定電梯目前所在的樓層。輸入為電梯號碼,其傳回為此電梯目前所在的樓層,但當此電梯不提供服務時,則傳回 999。 */
📝 此題為申論題
思路引導 VIP
先用 getqueue 取目標,沒有則回 0。接著歷遍電梯 1 到 N,用 getcurfloor 得目前樓層,如果!=999則計算與目標距離,找最小距離的電梯回傳。