สมมติว่าเรามีเมทริกซ์ขนาด 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