C++ 程式碼用於查詢內盒的中心


假設我們有一個大小為 n x m 的矩陣。單元格要麼是白色的“W”,要麼是黑色的“B”。表格內的某個奇數長度的正方形被塗成黑色。我們必須找到這個正方形的中心。

因此,如果輸入是這樣的

WWBBBW
WWBBBW
WWBBBW
WWWWWW
WWWWWW

那麼輸出將是 (3, 1)。

步驟

要解決這個問題,我們將遵循以下步驟 −

n := row count of matrix
m := column count of matrix
cnt := 0
X := 0
Y := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   for initialize j := 0, when j < m, update (increase j by 1),
do:
      if matrix[i, j] is same as 'B', then:
         increase cnt by 1
         X := X + i
         Y := Y + j
X := X / cnt
Y := Y / cnt
return (Y, X)

示例

讓我們看以下實現以獲得更好的理解 −

#include <bits/stdc++.h>
using namespace std;
void solve(vector<vector<char>> matrix){
   int n = matrix.size();
   int m = matrix[0].size();
   int cnt = 0, X = 0, Y = 0;
   for (int i = 0; i < n; i++){
      for (int j = 0; j < m; j++)
         if (matrix[i][j] == 'B')
            cnt++, X += i, Y += j;
   }
   X /= cnt;
   Y /= cnt;
   printf("%d, %d\n", Y, X);
}
int main(){
   vector<vector<char>> matrix = { { 'W', 'W', 'B', 'B', 'B', 'W' },
      { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'B', 'B', 'B', 'W' },
      { 'W', 'W', 'W', 'W', 'W', 'W' }, { 'W', 'W', 'W', 'W', 'W', 'W' } };
   solve(matrix);
}

輸入

{ { 'W', 'W', 'B', 'B', 'B', 'W' },
   { 'W', 'W', 'B', 'B', 'B', 'W' }, { 'W', 'W', 'B', 'B', 'B', 'W' },
   { 'W', 'W', 'W', 'W', 'W', 'W' }, { 'W', 'W', 'W', 'W', 'W', 'W' } }

輸出

3, 1

更新於:29-3-2022

328 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告