#45215: C語言解法


william000000000 (unknown)

學校 : 國立臺灣科技大學
編號 : 191545
來源 : [118.232.105.6]
最後登入時間 :
2025-01-26 16:16:41
o076. 1. 特技表演 -- 2024年6月APCS | From: [118.232.105.6] | 發表日期 : 2025-01-26 17:24

#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;
}

 
ZeroJudge Forum