Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để kiểm tra cờ đã cho có bị tước hay không

Giả sử chúng ta có một ma trận kích thước n x m. Mỗi ô sẽ chứa một giá trị từ 0 đến 9. Có một lá cờ nên có sọc:mỗi hàng ngang của lá cờ nên chứa các ô vuông cùng màu và màu của các hàng ngang liền kề phải khác nhau. Chúng tôi phải kiểm tra ma trận đã cho có phải là cờ hợp lệ hay không.

Vì vậy, nếu đầu vào giống như

0 0 0
1 1 1
3 3 3

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

n := row count of matrix
m := column count of matrix
l := 'm'
res := 1
for initialize i := 0, when i < n, update (increase i by 1), do:
   f := matrix[i, 0]
   for initialize j := 0, when j < m, update (increase j by 1),
do:
      if matrix[i, j] is not equal to f, then:
         res := 0
   if l is same as f, then:
      res := 0
   l := f
return (if res is non-zero, then true, otherwise false)

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
}

Đầu vào

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

Đầu ra

1