Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

รหัส C++ เพื่อค้นหาศูนย์กลางของกล่องด้านใน


สมมติว่าเรามีเมทริกซ์ขนาด n x m เซลล์มี 'W' เป็นสีขาวหรือ 'B' เป็นสีดำ สี่เหลี่ยมจัตุรัสบางอันภายในโต๊ะที่มีความยาวคี่ถูกทาสีดำ เราต้องหาจุดศูนย์กลางของจตุรัสนี้ให้ได้

ดังนั้นหากอินพุตเป็นแบบ

แล้วผลลัพธ์จะเป็น (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