Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ ตรวจสอบธงว่าถูกตัดแถบหรือไม่

สมมติว่าเรามีเมทริกซ์ขนาด n x m แต่ละเซลล์จะเก็บค่าตั้งแต่ 0 ถึง 9 ธงควรจะเป็นแถบแนวนอน: แต่ละแถวแนวนอนของธงต้องมีสี่เหลี่ยมสีเดียวกัน และสีของแถวแนวนอนที่ติดกันต้องต่างกัน เราต้องตรวจสอบว่าเมทริกซ์ที่กำหนดเป็นธงที่ถูกต้องหรือไม่

ขั้นตอนการแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

n := จำนวนแถวของเมทริกซ์
m := จำนวนคอลัมน์ของเมทริกซ์
l := 'm'
res := 1
for i := 0 ถึง n-1:
    f := matrix[i, 0]
    for j := 0 ถึง m-1:
        if matrix[i, j] != f:
            res := 0
    if l == f:
        res := 0
    l := f
return (res != 0)

ตัวอย่างโค้ด

#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 = 1;
    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 = 0;
        }
        if (l == f)
            res = 0;
        l = f;
    }
    return res ? true : false;
}

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

อินพุต

{ { 0, 0, 0 }, { 1, 1, 1 }, { 3, 3, 3 } }

เอาต์พุต

1