#45215: C語言解法


william000000000 (unknown)

學校 : 國立臺灣科技大學
編號 : 191545
來源 : [220.135.153.239]
最後登入時間 :
2025-06-08 13:05:11

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n = 0;
    int sum = 0, count = 1;

    // 輸入建築數量
    scanf("%d", &n);

    // 動態分配記憶體
    int *height = malloc(n * sizeof(int));
    if (height == NULL) {
        fprintf(stderr, "Error: Memory allocation failed\n");
        return 1;
    }

    // 輸入建築高度
    for (int i = 0; i < n; i++) {
        scanf("%d", &height[i]);
    }

    // 計算最長滑翔路徑
    for (int i = 0; i < n - 1; i++) {
        if (height[i + 1] < height[i]) {
            count++; // 滑翔延續
            if (count > sum) {
                sum = count; // 更新最長路徑
            }
        } else {
            count = 1; // 滑翔中斷,重置計數器
        }
    }

    // 如果只有一個元素,確保 sum 至少為 1
    if (sum == 0) sum = 1;

    // 輸出結果
    printf("%d\n", sum);

    // 釋放記憶體
    free(height);

    return 0;
}