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

C++のマトリックスで安全なセルを見つける


行列mat[][]があるとします。キャラクターZとPがあります。Zはゾンビ、Pは植物です。そして別のキャラクター*は裸地です。植物がゾンビに隣接している場合、ゾンビは植物を攻撃する可能性があります。ゾンビから安全な植物の数を見つける必要があります。マトリックスが次のようになっていると仮定します-

C++のマトリックスで安全なセルを見つける

したがって、安全な植物は2つだけです。

行列を要素ごとにトラバースし、現在の要素が植物の場合は、植物がゾンビに囲まれているかどうかを確認します。そうでない場合は、カウントを増やします。

#include<iostream>
using namespace std;
bool isZombie(int i, int j, int r, int c, string mat[]) {
   if (i < 0 || j < 0 || i >= r || j >= c || mat[i][j] != 'Z')
      return false;
      return true;
}
int countSafeCells(string matrix[], int row, int col) {
   int i, j, count = 0;
   for (i = 0; i < row; i++) {
      for (j = 0; j < col; j++) {
         if (matrix[i][j] == 'P') {
            if (!isZombie(i - 1, j - 1, row, col, matrix) && !isZombie(i - 1, j, row, col, matrix)
               && !isZombie(i - 1, j + 1, row, col, matrix) && !isZombie(i, j - 1, row, col, matrix)
               && !isZombie(i, j, row, col, matrix) && !isZombie(i, j + 1, row, col, matrix)
               && !isZombie(i + 1, j - 1, row, col, matrix) && !isZombie(i + 1, j, row, col, matrix)
               && !isZombie(i + 1, j + 1, row, col, matrix)) {
               count++;
            }
         }
      }
   }
   return count;
}
int main() {
   string mat[] = { "**P*", "Z***", "*P**", "***P" };
   int row = sizeof(mat) / sizeof(mat[0]);
   int col = mat[0].length();
   cout << "Number of safe cells: " << countSafeCells(mat, row, col);
}

出力

Number of safe cells: 2

  1. C++の各ツリー行で最大値を見つける

    二分木があるとすると、その木の各レベルの最大の要素を見つける必要があります。したがって、ツリーが次のような場合- その場合、出力は[3,5,8]になります。 これを解決するには、次の手順に従います- ansという配列を定義します 再帰関数solve()を定義します。これはツリーノードを取り、レベルは最初は0です。このメソッドは-のように機能します。 ノードがnullの場合は、を返します。 level =ansのサイズの場合、ノード値をansに挿入します。それ以外の場合、ans [level]:=ans[level]とノード値の最大値 呼び出しsol

  2. 行列の転置を見つけるためのC++プログラム

    行列は、行と列の形式で配置された数値の長方形の配列です。行列の転置は、元の行が現在の列である新しい行列であり、その逆も同様です。たとえば。 マトリックスは以下のとおりです- 1 2 3 4 5 6 7 8 9 上記の行列の転置は次のとおりです。 1 4 7 2 5 8 3 6 9 行列の転置を見つけるプログラムは次のとおりです- 例 #include<iostream< using namespace std; int main() {    int transpose[10][10], r=3, c=2, i, j;    int a