首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

HDU 1037 解題詳解:18輪大貨車能否安全通過地下通道?

     編輯:關於C語言

HDU 1037 解題詳解:18輪大貨車能否安全通過地下通道?

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 循環讀取三個數即可(題目保證只有一行三個數)。

參考代碼 (C)

#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 語言基礎語法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved