【題解】ZeroJudge g595: 1. 修補圍籬

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=g595
【解題想法】陣列

  • 題目保證不會有兩個相鄰的吹斷圍籬,而穿斷的圍籬有可能位在邊界
  • 在輸入的 n 個圍籬(編號1~n)前後多加兩個虛擬圍籬(編號分別為 0 和 n+1),其高度設為比圍籬可能的高度還大,方便處理。
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int h[n+2];
    h[0] = 105; // -0 ≤ h[i] ≤ 100
    h[n+1] = 105;
    for (int i = 1; i <= n; i++) {
        cin >> h[i];
    }
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        if (h[i] == 0) {
            ans += max(min(h[i-1], h[i+1]) - h[i], 0);
        }
    }
    cout << ans << "\n";
    return 0;
}

分享本文 Share with friends