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

Kiểm tra ma trận có phải là cờ sọc hợp lệ bằng C++

Mô tả bài toán

Cho một ma trận kích thước n x m. Mỗi ô chứa giá trị từ 0 đến 9. Một cờ được coi là "sọc" nếu thỏa mãn:

  • Mỗi hàng ngang chứa các ô cùng màu (cùng giá trị).
  • Màu của các hàng liền kề phải khác nhau.

Nhiệm vụ: Kiểm tra xem ma trận cho trước có phải là cờ sọc hợp lệ hay không.

Ví dụ

Ma trận:

000
111
333

Kết quả: Hợp lệ (true).

Thuật toán

  1. Lấy số hàng n và số cột m.
  2. Khởi tạo biến l lưu màu của hàng trước (khởi tạo giá trị không hợp lệ, ví dụ 'm').
  3. Duyệt từng hàng i từ 0 đến n-1:
    • Lấy màu của ô đầu tiên hàng i: f = matrix[i][0].
    • Kiểm tra toàn bộ hàng i: nếu có ô nào khác f thì không hợp lệ.
    • Nếu màu hàng hiện tại f trùng với màu hàng trước l thì không hợp lệ.
    • Cập nhật l = f.
  4. Trả về true nếu mọi hàng đều hợp lệ, ngược lại false.

Code C++

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

bool solve(vector<vector<int>> matrix) {
    int n = matrix.size();
    int m = matrix[0].size();
    char l = 'm';
    bool res = true;
    for (int i = 0; i < n; i++) {
        char f = matrix[i][0];
        for (int j = 0; j < m; j++) {
            if (matrix[i][j] != f)
                res = false;
        }
        if (l == f)
            res = false;
        l = f;
    }
    return res;
}

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

Đầu vào / Đầu ra

Input: {{0,0,0}, {1,1,1}, {3,3,3}}

Output: 1 (true)