題目 5 題解

解題想法

在本章節提到,我們可以利用 breakcontinue 來分別結束迴圈跳過迴圈,我們也可以把此兩功能運用在實作中。

從題目敘述中,我們可以把貨物歸納為三個條件:

  1. 如果目前貨物良好,就繼續迴圈
  2. 如果目前貨物不良,就跳過迴圈
  3. 如果目前貨物腐爛,就停止迴圈

舉以下程式為例,我們將 res[i] 設定為第 i 個貨物,剛剛提到的三個條件都可以列入迴圈中:

for (int i = 0; i < n; i++) {
    if (res[i] > 0) ans++;
    else if (res[i] == 0) continue;
    else break;
}

最後迴圈跑完後再輸出答案即可。

範例程式

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, ans = 0, res[1005];
    cin >> n;
    for (int i = 0; i < n; i++) cin >> res[i];
    for (int i = 0; i < n; i++) {
        if (res[i] > 0) ans++;
        else if (res[i] == 0) continue;
        else break;
    }
    cout << ans << '\n';
    return 0;
}