C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

指定されたフラグが削除されているかどうかを確認するC++コード


サイズnxmの行列があるとします。各セルは0から9までの1つの値を保持します。旗は縞模様である必要があります。旗の各水平方向の行には同じ色の正方形が含まれ、隣接する水平方向の行の色は異なる必要があります。与えられたマトリックスが有効なフラグであるかどうかを確認する必要があります。

したがって、入力が次のような場合

0 0 0
1 1 1
3 3 3

ステップ

これを解決するには、次の手順に従います-

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)

理解を深めるために、次の実装を見てみましょう-

#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

  1. 特定のツリーグラフが線形であるかどうかをC++で確認します

    ここでは、ツリーグラフが線形であるかどうかを確認する方法を説明します。線形ツリーグラフは1行で表すことができます。これが線形ツリーグラフの例であると仮定します。 しかし、これは線形ではありません- グラフが線形であるかどうかを確認するには、2つの条件に従うことができます ノードの数が1の場合、ツリーグラフは線形です ノードの(n – 2)が次数2の場合 例 #include <iostream> #include <vector> #define N 4 using namespace std; class Graph{    p

  2. 与えられた二分木がAVL木であるかどうかをチェックするC++プログラム

    AVLツリーは自己平衡二分探索木であり、左右のサブツリーの高さの差がすべてのノードで複数になることはありません。 これは、特定のバイナリツリーがAVLツリーであるかどうかを確認するためのC++プログラムです。 アルゴリズム Begin function AVL() returns true if the given tree is AVL otherwise false.    if(root == NULL)       return 1    leftheight = height(root->left) &nb