Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tính chiều cao cây sau n ngày tưới nước bằng C++

Mô tả bài toán

Cây cao 1cm ban đầu. Mảng A n phần tử (0/1): 1=tưới, 0=không. Quy tắc:

  • Không tưới 2 ngày liên tiếp → chết (trả về -1).
  • Tưới ngày i → cao +1cm.
  • Tưới ngày i và i+1 liên tiếp → cao +5cm (thay vì 1+1).
  • Không tưới → không cao.
Tìm chiều cao sau n ngày.

Ví dụ

A=[0,1,1] → Ngày1:0→1cm; Ngày2:1→2cm; Ngày3:1→+5=7cm. Output:7.

Thuật toán

Duyệt mảng, giữ trạng thái ngày trước (y). Nếu hôm nay tưới (x=1) và hôm qua tưới (y=1) → +5. Chỉ hôm nay tưới → +1. Nếu cả hai không tưới và i>0 → chết (-1).

Code C++

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

int solve(vector A) {
    int h = 1, prev = 0;
    for (int i = 0; i < (int)A.size(); ++i) {
        int cur = A[i];
        if (h == -1) continue;
        if (cur && prev) h += 5;
        else if (cur) h++;
        else if (!cur && !prev && i > 0) h = -1;
        prev = cur;
    }
    return h;
}

int main() {
    vector A = {0,1,1};
    cout << solve(A) << endl;
    return 0;
}

Đầu vào / Đầu ra

Input: {0,1,1}

Output: 7