Boudreaux 和 Thibodeaux 正趕著運送一車泥蝦(mudbugs)前往巴頓魯日。Thibodeaux 擔心貨車會撞上高架橋,而 Boudreaux 則信心滿滿地表示已經確認過三個地下通道的高度,貨車完全能通過。究竟是順利通關,還是會在 10 號州際公路上發生慘烈車禍?這就是 HDU 1037 要解決的問題。
輸入包含一組測試數據,一行中有三個整數,分別代表三個地下通道的高度(單位:英寸),範圍在 0 到 300 之間。18輪大貨車的高度固定為 168 英寸。
輸出規則:
NO CRASH。CRASH X,其中 X 是第一個導致碰撞的地下通道高度(即該通道高度 ≤ 168)。Sample Input 180 160 170 Sample Output CRASH 160
解析:第一個通道 180 > 168 安全通過;第二個通道 160 ≤ 168 發生碰撞,輸出 CRASH 160。
這是一道極其基礎的模擬題。只需依序讀取三個高度,逐一與 168 比較。一旦發現高度 ≤ 168,立即輸出碰撞信息並結束;若三個都大於 168,則輸出安全信息。
關鍵細節:輸入以換行符結束,讀取時需正確判斷行尾。C 語言中可用 getchar() 捕捉換行符,或直接用 scanf 循環讀取三個數即可(題目保證只有一行三個數)。
#include <stdio.h>
int main(void) {
int h1, h2, h3;
// 直接讀取三個整數
if (scanf("%d %d %d", &h1, &h2, &h3) != 3) return 0;
if (h1 <= 168) {
printf("CRASH %d\n", h1);
} else if (h2 <= 168) {
printf("CRASH %d\n", h2);
} else if (h3 <= 168) {
printf("CRASH %d\n", h3);
} else {
printf("NO CRASH\n");
}
return 0;
}
時間複雜度 O(1),空間複雜度 O(1)。
HDU 1037 是一道入門級模擬題,考察基本的輸入輸出、條件判斷和邏輯控制。雖然題目背景生動,但核心邏輯極其簡單,適合初学者練習 C 語言基礎語法。