ধরুন আমাদের কাছে কালো এবং সাদা পিক্সেল সমন্বিত একটি ছবি আছে, আমাদের কালো একাকী পিক্সেলের সংখ্যা বের করতে হবে। এখানে চিত্রটি কালো এবং সাদা পিক্সেলের জন্য যথাক্রমে 'B' এবং 'W' সমন্বিত একটি 2D অক্ষর বিন্যাস দ্বারা উপস্থাপন করা হয়েছে।
একটি কালো একাকী পিক্সেল আসলে 'B' যা একটি নির্দিষ্ট অবস্থানে অবস্থিত যেখানে একই সারি এবং একই কলামে অন্য কোনো কালো পিক্সেল নেই।
যদি ইনপুট −
এর মত হয়W | W | B |
W | B | W |
B | W | W |
আউটপুট 3 হবে। কারণ তিনটি 'B'ই কালো একাকী পিক্সেল।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
n :=ছবির আকার
-
m :=(যদি n অ-শূন্য হয়, তাহলে কলামের আকার, অন্যথায় 0)
-
n
আকারের দুটি অ্যারে সারি এবং কল সংজ্ঞায়িত করুন -
ret :=0, firstRow :=0
-
আরম্ভ করার জন্য i :=0, যখন i
-
j শুরু করার জন্য :=0, যখন j
করুন -
যদি ছবি[i, j] 'B' এর মত হয়, তাহলে −
-
যদি ছবি[0, j] <'Y' এবং ছবি [0, j] 'V' এর সমান না হয়, তাহলে −
-
(ছবি [0, j] 1 দ্বারা বাড়ান)
-
-
যদি আমি 0 এর সমান হয়, তাহলে −
-
(1 দ্বারা প্রথম সারি বাড়ান)
-
-
অন্যথায় যখন ছবি[i, 0] <'Y' এবং ছবি[i, 0] 'V' এর সমান না হয়, তখন −
-
(ছবি [i, 0] 1 দ্বারা বাড়ান)
-
-
-
-
-
আরম্ভ করার জন্য i :=0, যখন i
-
j শুরু করার জন্য :=0, যখন j
করুন -
যদি ছবি[i, j] <'W' এবং (ছবি[0, j] 'C'-এর মতো হয় বা ছবি [0, j] 'X'-এর মতো হয়, তাহলে −
-
যদি আমি 0 এর সমান হয়, তাহলে −
-
ret :=(যদি ret + firstRow 1 এর মত হয়, তারপর 1, অন্যথায় 0)
-
-
অন্যথায় যখন ছবি[i, 0] 'C' এর মতো বা ছবি [i, 0] 'X'-এর মতো, তখন −
-
(রেট 1 দ্বারা বৃদ্ধি করুন)
-
-
-
-
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; class Solution { public: int findLonelyPixel(vector<vector<char>>& picture) { int n = picture.size(); int m = n ? picture[0].size() : 0; vector<int< row(n); vector<int< col(m); int ret = 0; int firstRow = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (picture[i][j] == 'B') { if (picture[0][j] < 'Y' && picture[0][j] != 'V'){ picture[0][j]++; } if (i == 0) firstRow++; else if (picture[i][0] < 'Y' && picture[i][0] != 'V') { picture[i][0]++; } } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (picture[i][j] < 'W' && (picture[0][j] == 'C' || picture[0][j] == 'X')) { if (i == 0) ret += firstRow == 1 ? 1 : 0; else if (picture[i][0] == 'C' || picture[i][0] == 'X') ret++; } } } return ret; } }; main(){ Solution ob; vector<vector<char>> v = {{'W','W','B'},{'W','B','W'},{'B','W','W'}}; cout << (ob.findLonelyPixel(v)); }
ইনপুট
{{'W','W','B'},{'W','B','W'},{'B','W','W'}}
আউটপুট
3